How to design an OSD
Place elements on the character grid Betaflight actually draws, preview them over video, then export CLI commands to paste into Betaflight.
01Getting started
OSDesigner is a visual editor for Betaflight OSD layouts. Drag readings onto the character grid, check them against the video they will sit on, then export the set osd_* commands and paste them into the Betaflight CLI.
Nothing is uploaded. Layouts live in this browser and come back on reload. There are no accounts or API keys.
Open the editor and either start from a template or import a get osd dump. The shipped layout is a long-range HD starting point, not a blank canvas.
02The editor
Three panels share the screen:
- OSD Preview — the character grid the goggles will draw. PAL is 30×16, NTSC is 30×13, HD is 53×20.
- Selected Element — position, visibility and the settings for whatever is selected. Above it, the profile switcher.
- OSD Elements — the catalogue. Drag a card onto the preview, or click it to add and select.
The header holds the layout name, undo/redo, Import and Export. The monitor button hides the side panels so you can focus on the preview.
03Place elements
Positions are character cells, not pixels. Arrow keys nudge one cell; Shift+Arrow jumps five. A drag on the canvas moves the selection as one shape and will not let it hang off the grid.
Click an element to select it. Shift, ⌘ or Ctrl click adds to the selection; dragging across empty canvas brushes a box over everything inside it. A multi-selection turns the inspector into alignment and even-gap controls.
The plus on a library card adds that element; the check removes it from this profile. Delete removes the selection. Every change is undoable.
04Preview tools
The rail on the left of the preview is the view you will fly, not the firmware:
- Grid / Safe / Center — character cells, the one cell analog overscan inset, and the middle of the frame.
- Widest — every reading at the longest value it can show in flight (an altitude of 12.5 m becoming −3280.8FT). Positions do not move; it is a measurement.
- Ghosts — where the other profiles put the same elements, faintly, so you can see what disagrees.
- Goggles — HD only. The chrome DJI / Walksnail draw themselves and that Betaflight cannot move. Park readings around it, not under it.
- BG / Font — a still, a video frame, or a uploaded photo behind the OSD, and the MAX7456 character set the preview draws with. Upload a
.mcmof your own; it stays in this tab. - Alerts — overlaps, anything off the canvas, goggle-only telemetry on analog. Click an issue to select it.
Text elements have a preview value in the inspector, so you can type the craft name or pick a flight mode and see the real width. The firmware sources those strings itself — they are not exported.
05Profiles
Betaflight keeps three OSD profiles and uses them to show or hide elements. The editor is more permissive: each profile can also hold its own coordinates. On export, the active profile's position wins, and the export dialog names anything the profiles disagree on.
Settings → Lock positions matches the firmware: one position per element, profiles only show and hide. Turning it on copies the active profile's positions to the others.
Compare profiles puts every element in a table, one column per profile. A row can be matched to the profile you are editing, or the whole profile at once.
06Video system
Switch PAL, NTSC or HD from the header or Settings. Changing canvas asks first, because a PAL layout dropped onto HD would collapse into the top-left corner if the coordinates were kept as-is.
Convert keeps each element the same distance from the edge it was placed against — a right-hand column stays right-hand, centred readings stay centred. “Keep coordinates” is the escape hatch. Anything the smaller canvas cannot hold is listed in Alerts.
07Tidy up
Menu → Tidy up this profile pulls readings inside the margin, lines up rows and columns that are a character out, and moves overlapping readings to the nearest free cells — one undoable step. Elements keep the edge they were placed against. The horizon, camera frame and stick overlays are left alone, and the crosshair holds the middle of the screen.
Tidy follows the safe-area guide: with the guide off, the outer rows are fair game.
08Import from Betaflight
Import accepts CLI output from the Configurator CLI tab:
get osd— current values, ranges and the canvas size (osd_canvas_width/osd_canvas_height)diff allordump—set osd_*_pos = …lines
A dump can replace the whole project or load into the profile currently being edited. Alarms, units and canvas size are global on the flight controller, so they always apply project-wide. Canvas size from get osd wins over vcd_video_system, which still reads AUTO on a digital setup.
09Export CLI
Export copies set osd_* commands you paste into the Betaflight CLI, or downloads them as a text file. Leave “save” on if you want the board to write EEPROM after the paste. Global settings (alarms, units, canvas) can be included or skipped.
If two profiles place the same element in different cells, the active profile wins and the dialog lists the disagreement so it is not a surprise on the bench.
10Save, share and templates
Layouts autosave in this browser. ⌘S / Ctrl+S marks a snapshot. My layouts keeps several projects; duplicate or delete from there. Open layout reads a .json file; Share writes one, or builds a link.
A share link carries the whole project in the URL hash — nothing is uploaded. Opening a #p=… link asks before replacing the layout in the browser it lands in, then drops the payload from the address bar.
Templates are seeds, not files: Racing, Freestyle, Long range and Cinematic HD, each on the canvas it was drawn for. Undo puts the previous layout back.
11Keyboard shortcuts
Move the selection one character
Arrow keysMove five characters
Shift + ArrowAdd an element to the selection
Shift / ⌘ / Ctrl + clickSelect everything inside the box
Drag on empty canvasSelect every element in this profile
⌘ / Ctrl + ARemove the selection from this profile
DeleteDeselect
EscapeUndo
⌘ / Ctrl + ZRedo
⌘ / Ctrl + Shift + ZSave the layout
⌘ / Ctrl + SExport CLI
⌘ / Ctrl + ELayouts are stored under the
bf-osd-projects key in this browser. Clearing site data removes them. Share a link or a .json file if you want a copy somewhere else.