v1.0.4 — Now available · macOS 14+

Open any structured file. In under a second.

MachStruct opens, navigates, edits, and converts large JSON, XML, YAML, and CSV files at native speed. For a 100 MB JSON file, the first nodes are visible in under 500 ms — no loading spinners, no frozen UI.

Free · Open source · MIT License · Requires macOS 14 Sonoma or later

MachStruct showing a JSON tree view
< 500ms
first nodes for 100 MB JSON
< 150 MB
RAM browsing a 100 MB file
4
formats supported
Native
Swift & SwiftUI

Everything you need to work with structured data

Built for developers, data engineers, and anyone who regularly deals with large or complex structured files.

Three view modes

Switch between an expandable tree view, a sticky-header table view for CSV and uniform arrays, and a raw text view with syntax highlighting and pretty/minify toggle.

Full-text search

⌘F searches all keys and values. Yellow highlights on every match, amber on the active one. ↑↓ navigation auto-expands collapsed ancestors and scrolls the match into view.

Inline editing

Click any scalar to edit in place with type auto-detection. Double-click to rename keys. Add or delete nodes via context menu. Unlimited undo/redo with ⌘Z.

Navigation history & persistent bookmarks

⌘[ / ⌘] step back and forward through every node visited. ⌘D bookmarks any node — bookmarks survive close/reopen and are listed by full path string in the toolbar menu.

Zero-copy, lazy parsing

Files are memory-mapped via mmap. Only nodes you expand are fully parsed — a 500K-node file typically requires fewer than 500 value decodes. Top-level nodes appear instantly.

One-click format conversion

Export any document as JSON, YAML, or CSV in one click from the toolbar. Format auto-detected from file content, not just the extension.

Command palette

⇧⌘P opens a VS Code-style fuzzy launcher over every menu and toolbar action, recent documents, bookmarks, and view-mode toggles. Drive the whole app from the keyboard.

Scalar inspector

String values are auto-detected as base64, Unix timestamps, ISO 8601 datetimes, UUIDs, or #RRGGBB colours — an info chip pops a decoded breakdown.

JSON auto-fixer

When JSON parsing fails, a banner offers one-shot fixes for trailing commas, single-quoted strings, unquoted keys, and JS-style line comments — open even slightly-broken payloads.

See it in action

Browse through different formats and features to see how MachStruct handles your files.

Tree view of a weather API response

Four formats, one tool

Format is sniffed from the first 512 bytes of content — not just the file extension.

JSON

Two-phase simdjson SIMD parser. Structural index built in one pass; values decoded on demand. Handles files with 700K+ nodes.

XML

libxml2 SAX parser. Namespace badges and attribute display in the tree. Full round-trip save.

YAML

Yams/libyaml AST walk. Anchor, scalar-style, and tag badges displayed inline in the tree.

CSV

Auto-delimiter detection (, ; \t |), auto-header detection, RFC 4180 quoting. Per-column stats: count, unique, type, min/max.

Built for macOS, not ported to it

First-class macOS integration throughout — not just a wrapper around a web view.

Quick Look

Press Space in Finder to preview JSON, XML, YAML, and CSV files without opening MachStruct.

Spotlight

All keys and string values are full-text indexed so mdfind and Spotlight can search inside your documents.

macOS Services

"Format with MachStruct" and "Minify with MachStruct" appear in the Services menu when text is selected in any app.

Automatic updates

Sparkle 2 handles background update checks on launch. Always on the latest version with zero friction.

Clipboard watch

The welcome window detects structured data on the clipboard and offers a one-click Open banner — paste JSON directly without touching the file system.

App Sandbox compliant

Hardened Runtime, notarized, and stapled. Runs safely within macOS security boundaries — no entitlement overreach.

Performance that holds up

Measured on Apple M4 Mac mini, release build.

File Size Nodes First nodes visible Full index
API response 10 MB ~250 K < 100 ms ~230 ms
Database export 100 MB ~1.5 M < 500 ms < 1.5 s
Wide config 10 MB ~350 K < 100 ms ~280 ms
Deeply nested (400+ levels) ~400 < 20 ms < 20 ms

Ready to open your first file?

Free and open source. Drop a JSON, XML, YAML, or CSV file and it opens before you can blink.

macOS 14 Sonoma or later · Apple Silicon & Intel · Universal binary