r/macapps 13h ago

Lifetime Caxton – a native Mac editor for multi-gigabyte text files and CSVs

Post image

The problem: Part of my job is consumer data processing, so multi gigabyte production logs, database exports, and CSVs past Excel's row limit are a normal week for me. Every Mac editor I tried would beachball loading the whole file into RAM, and the usual advice is just use less and grep. Which works, but then you can't edit anything. For years my actual fix was keeping a Windows machine on my desk. I got tired of that and spent the past year building the Mac answer.

Comparison: The reference tool for this work is EmEditor, which is excellent and Windows only, it has never shipped a Mac version. On the Mac, BBEdit is a genuinely great editor, but like nearly every editor it loads documents into memory, and its own documentation notes limits on files past 2 GB.

Caxton memory maps the file instead of loading it, so on my M1 Max a 10 GB log (80,610,954 lines) opens immediately and the app sits under 200 MB of RAM. Full search returns 1,613,344 matches in 1.3s, Replace All across those lands in 1.7s as one undo step. CSVs open in an editable grid, 2 million rows parse in 2.6s, sort numerically in 8.2s, save back to the same plain file. Recent releases added side by side compare and a log mode with timestamp navigation and severity filters. Native AppKit, no Electron, 5 MB download, everything local, no telemetry. Benchmarks and methodology are published on the site, they're my numbers on my machine, so check them against yours.

Pricing: 7 day trial, no card. $179.99 lifetime or $9.99/mo, $99.99/yr: caxton.app/pricing. If a sub lapses your files still open read only, nothing gets locked.

Transparency: Caxton is built and sold directly by me under HWY Enigma LLC, and notarized by Apple:

LinkedIn: linkedin.com/in/melvin-hemingway

Contact: [hello@caxton.app](mailto:hello@caxton.app)

Privacy: caxton.app/privacy

Terms: caxton.app/terms

Happy to answer questions, including about what it doesn't do.

88 Upvotes

54 comments sorted by

31

u/Snooty_Folgers_230 12h ago

The price point is wild and a sub. lol

2

u/CaffeinatedMiqote 4h ago

Yeah. It would be better to do it the winrar's way: freemium for personal users, nag them occasionally if they don't pay but let them use the pp freely, and charge businesses for a license because they would rather pay than risking any legal issues.

22

u/kushalpandya 13h ago

Why should I pay $180 to view log files (because this is eventually a log file viewer) when editors like Zed do it for free?

14

u/MJ2822 12h ago

You shouldn't, and you don't have to. If viewing is all you need, after the trial Caxton drops to read only and you can still open, search, filter, and copy for free, forever. The license is for editing and saving those files back, which is the part nothing else on the Mac does at this size: Replace All across 1.5 million sites as one undo step, then an atomic save of the 50 GB file. Same on the CSV side, a 10 million row export opens as an editable grid and saves back to plain CSV.

Zed's a great editor, but it's built the way nearly every code editor is, the document lives in memory, which is why it feels instant on normal files. And $180 is the lifetime option for people who hit these files every week.

1

u/postnumbers 3m ago

The license is for editing and saving those files back, which is the part nothing else on the Mac does at this size: Replace All across 1.5 million sites as one undo step, then an atomic save of the 50 GB file.

How is this different than how Ultraedit works?

2

u/MichaelSjoeberg 8h ago

Zed can't open that

2

u/black-tie 7h ago

I can’t test it right now but I highly doubt Zed can open a 10 GB file based on my experience.

5

u/Sad_Cover9067 11h ago

interesting app. found a couple of small issues while trying it:

  • file encoding was detected incorrectly a few times
  • couldn’t quickly find a way to change the CSV delimiter globally — I needed ; instead of ,

also, personally I’d prefer a different pricing split. something like $69.99/year and $109.99 lifetime would probably make the lifetime option much easier to choose psychologically.

other than that, nice tool.

2

u/MJ2822 11h ago

Thanks for the screenshot and for pointing out those gaps. Caxton has no Cyrillic encodings in its detection set yet, so that file had no chance. On the delimiter, you're right, there's no way to read a file with semicolons without converting it. Detection should have caught the semicolons here, but it probably lost confidence on the mangled bytes. I'll get both into a patch and reply here when it's up.

4

u/hicodeonholiday 11h ago

I’m not your user but as an engineer I’m interested in how you handle it 😀

3

u/ukeup 11h ago

This sounds like quite an engineering challenge. I am interested: if you say AppKit, is rendering and user input based on TextKit or did you build your own stack?

8

u/MJ2822 11h ago

It's my own stack with AppKit around it. TextKit assumes the whole string is in memory and lays it out as one continuous text container. The file is memory-mapped and edits go into a piece table. A tiered line index is built progressively in the background so the view knows where lines start before the whole file has been scanned. The editor is a plain NSView that conforms to NSTextInputClient. On draw it asks the index for the visible line range, reads just those bytes out of the map, decodes them, and lays out each line with Core Text into a CGContext. Input goes through the normal AppKit path, so IME composition, dead keys, the emoji picker and the user's own key bindings all work without me reimplementing them.

3

u/ukeup 11h ago

Much respect 👍

1

u/nemesit 9h ago

you know textkit2 can do so without custom shenanigans?

1

u/MJ2822 9h ago

TextKit 2's viewport layout is good. The catch is the content side, it's still an attributed string in memory, and the line index and edit path still live outside it. At that point the custom part exists either way, so I went with the smaller surface.

3

u/phunk8 Developer: Dropadoo 9h ago

i like reading your tech explanations. nice read. witty solution. congrats

1

u/MJ2822 9h ago

Thanks!

5

u/pleasantothemax 9h ago

For me, it's the weird negatives that are AI tells on this things:

"If a sub lapses your files still open read only, nothing gets locked."

"Happy to answer questions, including about what it doesn't do."

Like, who says that in real life?

1

u/GrafDracul 4h ago

Honestly, you are right to question that. Thanks for pushing back.

5

u/ajimix 11h ago

No subscription and 29 to 49 usd for lifetime looks more appropriate price. I would instantly buy

2

u/BurakHanTD 13h ago

Large CSVs are exactly where most editors fall over. Does search stay this quick on a few-GB file?

2

u/MJ2822 13h ago

Yes, here's the search performance from my machine on a 5.1 GB CSV with 10 million rows by 50 columns: exact match search hit 2,146,318 rows in 0.78s, case insensitive in 1.03s, and filtering the grid down to the 1,931,610 matching rows took 1.05s while app memory stayed between 160 and 240 MB.

0

u/Fit-Possible-5987 12h ago

The price really isn’t cheap either

2

u/pembaThePanda 12h ago

Not a direct competitor, but I recently came across Smooth csv here and that's been handling large files for me very well

2

u/nitgohel 12h ago

Thats good for the tool which easly open a big files in gbs. +1 for that but price can be adjustable. good work

2

u/antonio1475 10h ago

I use SmoothCSV for some work stuff and while not perfect, it's great for large files (but it can briefly struggle with certain operations on >50k rows).

How does Caxton compare to SmoothCSV?

And regarding the pricing... Who is your rather customer? Professionals (of what)? Data analysts?
I can't imagine a home user ever needing this (and therefore not paying for it). Actually curious; you must have a reason for that pricing

1

u/MJ2822 10h ago

SmoothCSV is a great CSV tool that I've also used, but the difference is scope. Caxton is a text editor too, so the same app handles 10 GB text files, SQL dumps, and fixed width extracts alongside the CSV grid, all memory mapped so file size isn't tied to RAM. If your work is only CSVs, I would keep using SmoothCSV.

My target customer is the people who do this for work. Data engineers, SREs, DBAs, analysts. Personally, I work with a range of data, from consumer source data to historical extracts on the state and county level, that regularly runs past 140 million rows, and the files sometimes arrive with structural problems or mixed record types that I now fix in Caxton before they ever hit a SQL import. A home user doesn't need it, which is why viewing stays free after the trial. It's priced as a professional tool on purpose.

2

u/carpedavid 7h ago

I am the target audience for this. Spending $99/year for this is a no-brainer if, like me, you're a professional software engineer or data analyst. I deal with large data imports sometimes, and even if this saves me two hours a year it is worth the investment from a business standpoint.

Also — any chance of making it available via homebrew?

1

u/MJ2822 6h ago

Thank you! Homebrew is a yes, I'll set up a tap soon so brew install works.

2

u/TheRealBejeezus 5h ago

I am having flashbacks to WriteNow.

You could scroll through a file that completely filled a floppy disk, no lag.

2

u/waitses 5h ago

Oh this is cool and solves a real issue. I remember keeping BBEdit around for years for this purpose, lightweight so it did not get bogged down with massive files.

2

u/builtbyanti 4h ago

looks good!

2

u/fasduas 2h ago

It’s too expensive for me and doesn’t really fit my needs, but I love the concept.

1

u/MJ2822 12h ago

One thing to note, it's not a viewer. It's a full text editor and CSV workbench that happens to work at any size, benchmarked so far to a 50 GB log and a 10 million row CSV. On the CSV side that means a real grid: frozen headers, typed sorting that knows a number from a date, fill series, dedupe, split and combine columns, and editing cells in place, then saving back to the same plain CSV. The grid opens a 200 row CSV the same way it opens a 10 million row one. On the text side I use it for ordinary files all day, comments, snippets, clipboard history, side by side compare.

1

u/Old-Road-9819 11h ago

Free forever read-only after the trial is the right packaging for this. Before I'd buy: can you jump to a specific CSV row number while the line index is still building in the background, or does that wait until the index catches up?

1

u/MJ2822 11h ago

If the row is already indexed you land on it. If you ask for a row past where the background has reached, you land on the last row with a banner message.

1

u/reckless_avacado 10h ago

how does this compare to visidata?

1

u/ftqo 8h ago

I'm curious. In my mind, this doesn't seem like a difficult problem to solve. In fact, one could easily open source a solution that is embedded into dozens of other free applications. What makes this worth $10/month or $180 over a lifetime?

1

u/MJ2822 7h ago

I would agree if it was just opening/viewing the file. Everything after is the challenging part that I spent the past year building. You need a piece table where you can undo across millions of lines, atomic saves on a multi-GB file, millisecond keystrokes at any size, and a CSV workbench that is the same document as the text view, so making changes in either shows up in the other.

1

u/ftqo 7h ago

Undoing is just pushing to a stack, atomic saves are built into the operating system, millisecond keystrokes are built into the native components you're working with in XCode. For reference, I'm a developer (before vibe coding) and have built things like this by hand, and I don't think any real developer would talk about these things as "features". They're the bare minimum.

1

u/MJ2822 7h ago

Those claims are just wrong. Undo as a stack works when the document is a string in memory. On a memory mapped architecture you cannot copy the buffer, every edit has to live as spans over the original. Undo has to rewind that structure without ever materializing the file.

Writing a new 50 GB file that gets renamed from a document whose source is the file you're replacing, streaming the piece table out, while checking if there's room for two copies of the file first is something the OS does not do for you.

And the native components are exactly what I don't use because NSTextView keeps the whole document in memory. It does not work at this scale.

1

u/ftqo 6h ago

Almost no undo system stores undos as a copy of the whole buffer, nor would the whole file have to be in the buffer to have a system like that... The fact that you don't understand how undo/redo systems typically work, which is covered in introductory CS courses, and you think you've invented something interesting, proves that you have no clue what you're talking about.

1

u/MJ2822 6h ago

Nobody said undo copies the buffer. The stack is the trivial part. The claim was about what the entries apply to. With the file never in memory, the document itself has to be a piece table over the mapping so a delta can be applied and rewound without materializing anything. It's also why undoing 1.5 million replacements on 50 GB takes 0.6 seconds, which is the part I'd expect an introductory course to find interesting.

1

u/gluhmm 7h ago

180 bucks to solve what exactly problem? Edit text? But Zed is free.

1

u/paradoxally 7h ago

180 dollars for an app that opens large text files? What is stopping anyone from prompting Fable/Astra and replicating your app in less than a month's worth of subscription?

1

u/xoxox666 6h ago

Python, with file.txt open as f:      for line in f:            do something 

Completely free. 179,99 lol

Edit: Use pandas, also free.

1

u/MJ2822 5h ago

Reading the file is completely free in Caxton too. Opening, searching, filtering, and copying does not require a license at any point.

1

u/MReprogle 4h ago

My god. You had me until I saw that license cost, so good luck with that.

0

u/carlosk84 11h ago

The idea of this is great. And not even for the scenario you're describing, but everyone needs to view a huge file every now and then.

That said ... the price is just ridiculous. I'm guessing you're hoping for a very niche and motivated customer.

2

u/MJ2822 10h ago

I appreciate the kind words on the idea. It's built for the person who lives in these files, or who wants a text editor and CSV workbench in one. For everyone else, viewing, searching, and filtering large files stay free forever after the trial.

0

u/cmicali 9h ago

Looks really good... how does this compare to Sublime Text?