Show HN: Caxton – A native macOS text editor for multi-GB files

MJ28221 pts0 comments

Caxton — Large-File Text Editor for macOS

Caxton

Features<br>Benchmarks<br>Pricing<br>Docs<br>Changelog<br>Support<br>Download

Open a 10 GB text file instantly. Edit it like it's ten kilobytes.

Caxton is a native macOS editor for the files that other editors refuse:<br>production logs, database exports, ten-million-row CSVs.<br>Memory-mapped, fully indexed, AppKit top to bottom. No Electron involved.

Download Caxton<br>Read the benchmarks

7-day trial, no card · $9.99/mo · $99.99/yr · $179.99 lifetime

Private by default: your files stay on your Mac. No upload, no cloud processing, no telemetry. Privacy policy

Not a mockup: this is Caxton holding the 10 GB benchmark log. 80,610,954 lines in the status bar.

Built for<br>SREs on call<br>data engineers<br>DBAs<br>QA engineers<br>analysts

caxton › what it does

Three workflows Mac editors still struggle with.

The workflows that have been exclusive to EmEditor on Windows for fifteen years, rebuilt as a native Mac app.

A 10 GB file is the design target, not the failure mode.

Memory-mapped I/O, a piece-table document model, and a tiered line index that scales past 120 million lines. The full file opens and indexes by default (no slicing required), but a Large File Controller is there when you only want a byte range of something truly enormous. The viewport renders only what you can see, so a 500 MB single-line minified bundle scrolls like a config file.

Open a 10 GB log, usable at once immediate

Full 80.6M-line background index 19.5 s measured

Sustained scroll, 80M+ lines 60 fps

Memory footprint on a 10 GB document under 200 MB measured

Large File Controller for partial opens optional, never required

Follow-tail for growing logs built in

A spreadsheet grid that runs at log-file speed.

CSV mode auto-detects delimiters, freezes headers, and sorts millions of rows by any column: click the header, get an external merge sort. Type inference runs underneath so numeric columns sort as numbers, and malformed rows get explicit parse states instead of silent guesses.

Two million rows of order data in the grid. Click any header to sort, double-click any cell to edit.

Parse 1 GB · 2M rows × 50 columns to grid 2.6 s measured

Sort 2M rows by a numeric column 8.2 s measured

Sort any column from its header, numeric or text one click

Split, combine, extract, dedupe columns built in

Grep, but you can still scroll it.

Filter an 80-million-line file and see the first matches in under a second. Combine up to twelve conditions with AND/OR (plain text or regex, case, whole-word, exclude) and save the combinations you use every week. Slice mode shows matches in place with full surrounding context.

Filtered to ERROR: 160,846 matching lines out of 8 million, original line numbers preserved, applied in about a quarter of a second.

caxton › benchmarks

We publish the numbers. The ones marked measured are real.

Caxton ships behind a 13-class benchmark matrix covering every file shape that breaks editors: huge logs, wide CSVs, single-line bundles, mixed encodings. These are the headline rows.

Operation<br>File<br>Status<br>Result

Open, scroll, edit

10 GB log · 80.6M lines

MEASURED

immediate

Full background index

10 GB log · 80.6M lines

MEASURED

19.5 s

Find, 1.61M matches

10 GB log

MEASURED

1.3 s

Regex alternation, 5.64M matches

10 GB log

MEASURED

2.1 s

Replace All, 1.61M replacements

10 GB log

MEASURED

1.7 s

Filter, level=ERROR

80.6M lines · 1.6M matches

MEASURED

1.3 s

CSV parse to grid

1 GB · 2M rows × 50 cols

MEASURED

2.6 s

CSV sort, numeric column

1 GB · 2M rows × 50 cols

MEASURED

8.2 s

Save after scattered edits

10 GB log · atomic rewrite

MEASURED

11.3 s

Keystroke apply latency

10 GB document

MEASURED

≈ 1 ms

One keystroke, 1,000 cursors

10 GB document

MEASURED

Find in a single-line file

500 MB minified JS · one line

MEASURED

0.5 s

MEASURED = recorded by Caxton's in-app benchmark harness on an<br>M1 Max MacBook Pro (64 GB), macOS 15.7, internal SSD, Release build, warm cache.<br>Every number is count-verified: the find rows assert the exact match count, the<br>Replace All row re-finds all 1,613,344 replacements afterward. Methodology and the<br>full file-class matrix are in the docs.

Those numbers run on your files too.<br>Download Caxton<br>7 days free · no card

caxton › who it's for

Who uses Caxton?

02:14:07.881ERRORsite_reliabilityinspecting production logs without waiting: follow-mode on, filter set to ERROR

09:31:42.118INFO data_engineercleaning multi-GB CSVs and JSON exports before they ship to the warehouse

11:02:19.040WARN dbainspecting SQL dumps before importing them anywhere near production

14:48:55.213INFO qa_engineeranalyzing crash reports and test artifacts from a 4 GB run

16:20:08.667ERRORsecurity_analystreviewing massive audit logs, one suspicious session at a time

18:05:33.902INFO researcherexploring large datasets directly, no preprocessing, no subsampling

caxton › why native

No Electron. No web view. No plugin runtime. AppKit and Swift, top to...

measured caxton file rows line lines

Related Articles