Unfiled

Open it.
Paste it.
Work with it.

Unfiled is a native Mac text workbench for developers. Keep your text close, compare it, transform it, validate it, and use the right tools without leaving the editor.

Free to use. macOS 15 or later. Apple silicon and Intel.

Unfiled

A JSON document beside the JSON Tree panel, which reports the document valid and lists its structure with a copyable path. The action bar offers Format, Minify, Tree and Copy.

{
  "service": "orders-api",
  "region": "eu-west-1",
  "retries": 3,
  "timeout_ms": 2500,
  "tls": true,
  "hosts": [
    "db-01.internal",
    "db-02.internal"
  ],
  "limits": {    "rps": 1200,
    "burst": 2000
  },
  "features": {
    "tracing": true
  }
}
JSON Tree
● Valid JSON
${8 keys}
service"orders-api"
region"eu-west-1"
retries3
tlstrue
hosts[2 items]
0"db-01.internal"
1"db-02.internal"
limits{2 keys}
rps1200
burst2000
features{1 key}
Copy ValueCopy Path
$.limits.rps
JSON · Object · 8 keys Format Minify Tree Pro Copy LF · UTF-8 Ln 11, Col 14 · 18 lines

Seven tabs, seven kinds of file. Pick one — the bar along the bottom changes with it, and the tabs themselves are yours to group, collapse and rename.

The idea

Two promises, and nothing else to learn

Everything in Unfiled follows from these. There is no project to create, no file to name, and no window that asks you to decide something before you can type.

Tabs that never disappear

Type into a tab and it is already saved — to a local recovery database, not a file you have to name. Quit whenever you like. Unfiled never asks you to save on the way out, and everything comes back in the same order with the same tab active and the caret where you left it.

Actions that understand the text

Paste JSON and a Format button appears. Paste a log and you get severity filters. Paste a JWT and you can read its claims. The bar only ever shows what the content in front of you supports, so the app stays small even as it learns more formats.

Local by default

No account, no sync, no telemetry. Your text never leaves the Mac.

Native, not a web app

SwiftUI and AppKit. Real menus, real undo, real keyboard behavior.

Saving is optional

Press ⌘S when a scratch tab earns a real file. Until then, don't bother.

Undo you can trust

Every transformation is exactly one undo step, per tab, never shared.

What it does

The content brings the tools

Unfiled recognizes what you paste and offers only the actions that apply to it. Here is what that looks like in practice.

A workbench for logs Pro

Paste a log file and Unfiled parses timestamps, levels and stack traces. Filter by severity, collapse repeated lines into a count, hide the timestamp column, and highlight anything you care about — ORA-, a request ID, a service name.

  • Multi-select severity filters, from Trace to Fatal
  • Repeated lines collapse to one row with a count
  • Java and Python stack traces stay attached to their entry
  • Entirely view-only — your log file is never rewritten

Watch a file as it grows Pro

Point Unfiled at a log and it appends new lines as they are written — tail -f with the severity colours, filters and stack-trace grouping still on top. Rotation and truncation are handled explicitly rather than shown to you as a corrupted mixture.

  • Start at the end, or read the whole file in first
  • Pause to read back without being dragged to the newest line
  • A rotated or truncated file is noticed and restarted, and says so
  • Read-only: never creates, moves, truncates or writes the file

Compare anything

Two tabs, two files, a tab against a file, or a tab against whatever is on your clipboard. Added, removed and changed lines are colored separately, and you can step through differences one at a time.

  • Ignore whitespace and ignore case, independently
  • Next and previous difference, without hunting
  • Neither side is ever modified by comparing it

Structured data, read properly

Formatting, minifying, validating and copying are free forever — for JSON, and with the same care for XML, YAML, SQL, Base64 and JWTs. Pro adds the browsable tree, with the path of any node one click away, and CSV as a sortable table.

  • Validation that tells you the line and column, not just "invalid"
  • Copy a value or its JSON path from any node
  • JWT header and payload decoded locally — signatures are never claimed as verified
  • CSV and TSV open as a sortable table without touching the text

Convert between formats Pro

JSON, YAML, XML, CSV and TSV convert to each other, into a new tab. Formats do not carry the same things, so anything the target cannot hold is reported rather than quietly dropped — and the document you started from is never rewritten.

  • The result opens in a new tab; the original is only read
  • Lossy notes say what will not survive a round trip, and where
  • A conversion that cannot be done refuses, instead of half finishing
  • Key order is preserved rather than alphabetized behind your back

An editor that keeps up

All of it is free: line numbers, find and replace with regular expressions, syntax highlighting for twenty languages, colour-coded logs, split view, column and multi-cursor selection, and explicit control over encoding and line endings.

  • Highlighting runs off the main thread and never enters your undo history
  • Two tabs side by side, scrolling independently
  • Encoding and line endings are shown, and only ever converted when you ask
  • Large files stay responsive — expensive work backs off automatically

A regex workbench Pro

Write a pattern and watch what it matches while you type it, with a live count, capture groups and a replacement preview. It reads characters rather than structure, so it works on any tab — including the messy paste Unfiled could not classify as anything.

  • Case, multiline anchors and dot-matches-newline as separate switches
  • Lift one capture group into a new tab, one match per line
  • Replace is withdrawn the moment the text no longer matches the preview
  • Also on plain text: Extract pulls out URLs, IPs, UUIDs and more

Validation that points at the problem

The active tab is checked as you type. The status bar says pass or fail; when it fails, the panel lists what is wrong, with the line and column, and clicking a line takes you there. JSON validation is free — YAML, XML, JSON Lines and CSV are Pro.

  • Real YAML parsing, so anchors, aliases and flow collections are understood
  • Duplicate mapping keys reported, not silently accepted
  • Every document in a multi-document file is checked, not just the first
  • Validate As ▸ when detection guesses wrong

The chip is always there; the panel opens when you want the detail.

Eight feature showcases. Drag or swipe sideways, or use the left and right arrow keys.

Structured & live data

Seven tools for the shape of your data

Once Unfiled knows what a document is, it can do more than colour it. These read the structure — or, in Follow's case, keep reading the file. Every one of them leaves the document it worked from untouched.

Convert between formats Pro

JSON, YAML, XML, CSV and TSV, into a new tab. Anything the target format cannot carry is reported rather than dropped.

Compare structurally Pro

Diff two documents by their data, not their lines. Reindent one and reorder its keys — neither is a difference.

Schema Pro

Validate against a JSON Schema, with each violation at its path. Or infer a schema from a document you already have.

Generate types Pro

Type declarations in TypeScript, Swift, Python, Java, C# or Go, from the shape of the document. Deterministic, so it can be committed.

Extract Pro

Pull URLs, IP addresses, emails, UUIDs, paths, timestamps and embedded JSON out of text with no structure at all.

Regex workbench Pro

A pattern with a live count, capture groups and a replacement preview — on any tab, detected or not.

Follow a file Pro

Watch a log as it is written, with the workbench still applied. Rotation and truncation are handled, and the file is never written to.

Everything in the box

Free is the whole editor

Free is a complete persistent editor and workspace — tabs, search, split view, formatting, validation and diff. Pro is the workbenches that stand in for a separate log analyser, schema tool, semantic diff or type generator.

Free

Always The whole editor and workspace

Workspace

Unlimited tabsAutosaveSession restoreReopen closed tabPinned tabsTab groupsGlobal searchLarge files

Editing

Split viewMulti-cursorColumn selectionUndo & redoLine numbersFind & replaceRegex replaceSyntax highlighting

Files

Open & saveEncodingLine endings

Text & data tools

CompareValidatorsJSON format & minifyXML, YAML & SQLJWTBase64URL actionsTimestampsList tools

Pro

One-time purchase Workbenches that replace other tools

Logs & live data

Log workbenchFollow a file

Structured data

JSON treeCSV tableStructural compareSchema toolsGenerate typesFormat conversion

Text workbenches

ExtractRegex workbench

Workflow

Revision historyCustom actions

Each one stands in for something you would otherwise open separately — a log analyser, a schema tool, a semantic diff, a type generator. Bought once, not rented.

Privacy

Your text never leaves the Mac

This is a design constraint, not a policy promise. Unfiled has no networking code for user content at all — the only thing it ever sends is a license key, when you activate Pro.

No account

Nothing to sign up for, nothing to sign in to, nothing to forget.

No telemetry on your content

Diagnostics record operation identifiers and error categories. Never your text, file paths, URLs or tokens.

No cloud

Your tabs live in a local database in Application Support. Back it up like any other file.

Network, once

Only to activate or check a Pro license, carrying your key, an installation identifier and your Mac's model — never your text. Free never needs it.

Stop naming files you'll delete in an hour

Keep the scratch. Unfiled will still have it next week.

Free. macOS 15 or later.