“Can we add just one more thing?”
Yes, no, or “only if SPI2 moves”. You’ll know in seconds, not after a night with the datasheet.
No more datasheet Sudoku. Tell it you need a UART, SPI and three ADC channels, and it finds pins where all of them fit together.
| Requirement | Instance | Pins |
|---|---|---|
| UART | Auto → USART2 | PA2, PA3 |
| SPI | Auto → SPI1 | PA5, PA6, PA7 |
| ADC × 3 | ADC1 | PA0, PA1, PA4 |
| Status LED | GPIO · locked | PB3 |
Yes, no, or “only if SPI2 moves”. You’ll know in seconds, not after a night with the datasheet.
When a new requirement only fits after a reshuffle, the solver moves the fewest unlocked pins it can. Locked pins never move.
Ask for “a UART” and it chooses the instance that leaves room for everything else. You can still name one yourself.
When something doesn’t fit, it tells you exactly which requirements are fighting.
See the alternatives the solver found instead of taking the first answer.
Say which side of the package a UART belongs on, near its connector, and its pins stay there.
The solver runs in your browser, so nothing is sent anywhere to be solved. Projects autosave locally.
Add a requirement like “one UART”, “SPI with two hardware chip selects” or “three ADC channels”. Leave the instance on Auto, fix it to USART2, or name ADC1_IN5 directly.
Lock pins you’ve already routed, reserve pins you need for something else, and say which side of the package you want certain signals on.
Browse alternative mappings instead of taking the first answer. When the design changes, it moves as few pins as it can.
Export the pinout as a KiCad symbol library, with each pin named after its signal. A second, independent checker validates it against the device’s pin rules before you download it.
Picking MCU pins usually means an afternoon with the alternate-function table, a spreadsheet and a growing suspicion that SPI2 and I2C1 are fighting over the same pins. With MuxMage you just list what the board needs. The pin juggling is no longer your job.
You start from what the board needs, not from pins. Add a requirement like “one UART”, “SPI with two hardware chip selects” or “three ADC channels”. Be as specific as you like: leave the instance on Auto, fix it to USART2, or name ADC1_IN5 directly. Then add the constraints that come from the real board. Lock pins you’ve already routed, reserve pins you need for something else, and say which side of the package you want certain signals on so they end up near the connector they go to.
MuxMage fills in everything you didn’t specify and finds a pin for every signal. You can browse alternative mappings instead of taking the first answer. When the design changes, it treats your current pinout as the starting point and moves as few pins as it can. When a set of requirements really can’t fit, it says which ones collide, so you know what to give up or rethink.
Every result is checked against the device’s pin rules by a second, independent checker before it’s shown as valid. The solver runs in your browser, so your design isn’t sent anywhere to be solved. Projects autosave locally and export as JSON. Cloud sync and collaboration are coming later, for teams that want them.
About 2,200 STM32 parts and 33 Espressif ESP32 chips and modules, 38 families in all. You pick the exact part in the app.
Features marked “Available” are in the app today; each one has a wiki page. The ones marked “Not built yet” aren’t built. Tell us which one you want: those clicks decide what we build next.
Export the solved pinout as a KiCad symbol, with each pin named after its assigned signal. The export is validated before you download it.
Read the guide: KiCad symbol libraryExport every assigned pin and its signal as a CSV for your spreadsheet, schematic notes or firmware header generator.
Read the guide: Assignment CSVExport a whole project as JSON and open it again on another machine. Your requirements and locks come with it.
Read the guide: Project JSONProjects autosave in your browser. Go back to an earlier version, or branch off to try a different pinout without losing the current one.
Read the guide: History and branchesNo install and no 2 GB vendor IDE. The solver runs locally, so your design isn’t sent anywhere to be solved.
Read the guide: Runs in your browserKeep your KiCad symbols in step with the pinout automatically, without exporting a library by hand after every change.
Start from an existing CubeMX project.
Review the pinout with your team and sign it off. Every pin is checked against the device’s pin rules, so no more debates about whether a pin supports something.
See whether the same requirements fit a cheaper part.
Offline app for locked-down machines.
Browse the wiki for how each feature works.
Pick your part, add what the board needs, and see where it fits.