Merge two OpenStreetMap PBF files with confidence — review every difference, decide what wins, and export a clean, merged map in minutes.
PBFusion is a desktop app for comparing and merging two OpenStreetMap PBF (Protocolbuffer Binary Format) files. Point it at a source file and a target file, and it turns a painful, script-heavy job into a visual, click-through workflow: the app analyzes every difference, lets you review each one side by side, and exports a merged PBF file with your decisions baked in.
v0.1.0 · macOS / Windows / Linux · Built with Tauri 2
Working with OSM data at scale usually means juggling regional extracts, applying updates, or reconciling two datasets that have drifted apart. Merging them by hand means writing one-off scripts, decoding raw PBF dumps, and squinting at XML diffs — slow, error-prone, and impossible to audit.
PBFusion is built for mappers, GIS developers, and data teams who want a human-friendly way to do this:
- See everything — every added, removed, and modified element is listed, filterable, and inspectable.
- Understand quickly — compare elements on a map and in a side-by-side JSON diff, instead of parsing bytes.
- Keep control — you decide, element by element, which version wins.
- Ship clean output — the merge is only as messy as the decisions you made.
| 🗂️ Project management | Create, search, and delete merge projects — your work is saved locally and ready to resume. |
| 🔍 Automatic diff analysis | Two PBF files in, a complete Added / Removed / Modified diff out, computed in the background. |
| 🎛️ Powerful filtering | Narrow thousands of diffs by element type (Node / Way / Relation), diff type, element ID, or settlement status. |
| 🗺️ Map view | See Source (blue) and Target (red) geometries side by side on an interactive MapLibre map. |
| 📄 JSON diff | A Monaco-powered side-by-side editor shows the full property structure of both versions. |
| ✅ Per-entry settlement | For each diff: keep the Source version, keep the Target version, or mark it Custom. |
| 📊 Progress tracking | Live settled/unsettled counts update in real time as you work through the list. |
| 📦 Merged export | Generate a single merged PBF file from your settlement decisions. |
1. Choose your files. Pick a source and a target .pbf file and create a project. Analysis runs in the background.
2. Review the differences. Browse the diff list, filter it down, and inspect any element two ways — on the map and in the JSON side-by-side view.
3. Decide and export. Settle each diff (Source / Target / Custom), watch your progress tick up, then export the merged PBF file.
Prerequisites: Node.js ≥ 18 · Yarn 4 · Rust ≥ 1.70
# Install dependencies
yarn install
# Development mode (Vite + Rust together)
yarn tauri dev
# Frontend only (no Tauri backend)
yarn dev
# Production build
yarn tauri build- On the Projects page, click the Source File and Target File areas to select two
.pbffiles, give the project a name, and hit Create Project. - Open the project and switch to the Differences tab to see the diff list.
- Click any diff to open the detail panel — use the Map and JSON views to inspect it.
- Choose Use Source, Use Target, or Custom to settle it, then export the merged file when you're done.
Tauri 2 · Rust · React · TypeScript · pbf-craft (PBF processing) · Monaco Editor (JSON diff) · MapLibre GL (maps) · TailwindCSS + shadcn/ui
Shipped
- Project management (create / search / delete / persist)
- Dual-PBF diff analysis with progress tracking
- Diff filtering & settlement (Source / Target / Custom)
- Side-by-side JSON diff editor
- Interactive map visualization for Node / Way / Relation
- Merged PBF export
- Settings page
- Light / dark themes
On the roadmap
- Help page with usage documentation
- Batch settlement — settle multiple diffs at once
- App icon
- Test coverage
Private project. No license declared at this time.
