Contribute
Each pinout is one JSON file. The site builds from those files.
Sending a change
No clone needed. GitHub forks the repo and opens the file in its web editor.
Add a pinoutEdit the cross-referenceBrowse the repoContributing guide
Every board page also links to its own file at the bottom.
Cite a source for every pin: a datasheet page or a vendor diagram. Untraceable data does not go in.
Adding a pinout
Add data/boards/<slug>.json. The board page, search, legend and cheat sheet all come from it.
{
"slug": "my-board",
"name": "My Board v1",
"shortName": "MyBoard",
"vendor": "Acme",
"category": "mcu-board",
"summary": "One or two sentences on what it is and what makes it awkward.",
"logic": "3.3 V",
"package": "2x20 2.54 mm",
"layout": {
"kind": "board",
"numbering": "ccw",
"rows": 20,
"sideLabels": ["Pins 1-20", "Pins 21-40"]
},
"keywords": ["nicknames", "part numbers"],
"notes": ["Gotchas, one per entry."],
"docs": [{ "label": "Datasheet", "url": "https://…" }],
"pins": [ /* … */ ]
}layout.numbering places the pins for you:
zigzag: 2×N headers, odd pins left, even right. Raspberry Pi.ccw: the DIP convention, pin 1 top-left, down the left and back up the right. DIP chips, Pico.explicit: each pin sets its ownsideandrow. Skip a row number to leave a gap, as on the Arduino Uno headers.
The pin object
{
"number": 12,
"name": "GPIO18",
"primary": "gpio",
"aliases": ["BCM 18", "PCM_CLK"],
"tags": ["pwm", "clock"],
"functions": ["PWM0", "PCM/I2S CLK", "SPI1 CE0"],
"note": "The pin WS2812 libraries use, because it reaches PWM0 via DMA."
}primary is the pin's electrical role and sets its color. tags are the buses it can be muxed onto.
primary (pick one)
- power55 V
- power33.3 V
- vccVCC
- vinVIN
- gndGND
- gpioGPIO
- ctrlControl
- ncNC
tags (any number)
- i2cI²C
- spiSPI
- uartUART
- pwmPWM
- analogADC
- dacDAC
- touchTouch
- clockClock
Use note for gotchas: strapping pins, on-board pull-ups, current limits, analog-only pins.
Adding a cross-reference
Append to data/crossref/parts.json. Every equivalent needs a notes string explaining the difference.
{
"part": "IRF540N",
"confidence": "not-drop-in",
"notes": "Looks like the same part and is constantly substituted
for it, but it is NOT logic level: Rds(on) is specified
at Vgs = 10 V and it barely turns on from a 5 V pin."
}Confidence levels:
drop-in: same pinout and behavior, no code change.caveats: works, but a voltage, library flag, register or rating changes.not-drop-in: same job, different hardware.
Set pinout to a board slug to link the two pages. Current slugs: 24lc256, sn74hc00, sn74hc04, sn74hc08, sn74hc138, sn74hc14, sn74hc165, sn74hc245, sn74hc32, sn74hc4067, sn74hc595, sn74hc74, sn74hc86, adafruit-feather, ads1115, arduino-mega-2560, arduino-nano-v3, arduino-uno-r3, arduino-uno-r4-minima, at89s52, atmega328p-pdip, attiny85, beaglebone-black-p8, beaglebone-black-p9, bme280, cd4017, cd4051, ch32v003, dht22, ds1307, ds18b20, esp-01, esp32-devkit-v1, esp32-cam, esp32-s3-devkitc-1, hc-sr04, hx711, icl7660, ina219, l293d, lm324, lm339, lm358, lm393, max485, max6675, max7219, mcp23017, milk-v-duo, mos-6502, mos-6522, mos-6551, ne555, frdm-k64f, pca9685, pcf8574, pic16f877a, pro-micro-32u4, radxa-rock-5b, raspberry-pi-26-pin, raspberry-pi-40-pin, raspberry-pi-pico, raspberry-pi-pico-2, xiao-esp32c3, stm32f103-blue-pill, stm32f411-black-pill, teensy-4-0, teensy-4-1, tp4056, uln2003, wemos-d1-mini, ws2812b, zilog-z80.
Validation
npm run validate runs before every build and fails it if:
- a slug does not match its filename, or is not unique
- a
primaryortagis not a known signal key - pin numbers have gaps, or two pins share a grid slot
- a
ccworzigzaglayout does not have rows x 2 pins - a doc link is not https
- a cross-reference
pinoutnames a board that does not exist - an equivalent has no
notes
Accuracy
Data comes from manufacturer datasheets and vendor diagrams. Clones and revisions differ, so check your silkscreen before powering up.
Wanted
Boards people ask for that are not here yet:
- BBC micro:bit edge connector, 25 strips including the five rings
- Raspberry Pi Compute Module 4, both 100-pin connectors
- Orange Pi 5 and Radxa ROCK 5
- Seeed XIAO family, one footprint across SAMD21, RP2040, ESP32-C3 and nRF52840
- Teensy 4.0 and 4.1
- Arduino Mega 2560, and the Uno R4 which shares the R3 headers
- ESP32-C3 and S3 SuperMini, and the 38-pin ESP32-DevKitC
- OrangeCrab and other ECP5 FPGA boards in the Feather footprint
- MAX7219, HC-SR04, PCA9685, DS3231 and other common breakouts
- 6522 VIA and 6551 ACIA, to go with the 6502