Support
Support for TinyTextEditor
Answers to the questions people ask most, every keyboard shortcut, and the limits you may run into. If something here doesn’t cover it, write to me.
Contact
TinyTextEditor is made by one person, TonyJohnVan, in New York City. I read every message.
It helps to include your macOS version, your Mac’s chip, and the steps that lead to the problem. Please don’t attach files with private contents; a description of the file (its size, encoding and line endings) is usually enough. The app sends nothing on its own, so I only know about a problem when you tell me.
How do I open a huge file?
Open it as you would any other: File > Open, drag it onto the window, or double-click it in Finder. The first screen appears right away, whatever the size. On a 5 GB file that takes 23 ms on an Apple M5 Max.
The line index builds in the background, at your disk’s read speed for a file that isn’t already cached. You can scroll and navigate throughout, and line numbers appear as indexing reaches them. Edits you type in that time are queued and applied in order, so no keystroke is lost.
A file that is one enormous line, such as minified JSON, is fine too: long lines are drawn in 4 KB segments, so a 2 GB line stays usable. Turn on word wrap with ⌥Z to read it.
Why can it only open files I choose?
TinyTextEditor runs in the macOS App Sandbox. The sandbox lets it read and write only what you hand it: files and folders picked in an Open or Save panel, dragged onto the app, or opened with it from Finder. A file sitting right beside one you opened stays unreadable, so even a bug in the editor cannot reach the rest of your disk. With no network entitlement, it couldn’t send anything anywhere either.
Two things follow from this:
- Find in Files searches only inside a folder you have opened. Open the project folder (File > Open, then choose the folder) and it appears in the sidebar, searchable with ⇧⌘F and Goto Anything with ⌘P.
- Reopening works through bookmarks. The app remembers what you opened with macOS security bookmarks, so Open Recent and session restore keep working across launches. If a file was moved or its permissions changed, open it again from the Open panel.
Can I open files from Terminal?
Yes. macOS hands the app access to whatever you name:
open -a TinyTextEditor notes.txt
open -a TinyTextEditor ~/Projects/my-app To make that shorter, add alias tiny='open -a TinyTextEditor' to your ~/.zshrc.
Why do saved files have a quarantine attribute?
macOS marks files saved by any sandboxed app with the com.apple.quarantine extended attribute. TinyTextEditor has no say in this, and the attribute doesn’t change the contents of the file.
In testing, scripts saved this way still ran from Terminal. A compiled binary saved from the editor would be blocked until you clear the attribute:
xattr -d com.apple.quarantine path/to/file Why do I see red boxes in my text?
They mark characters that are invisible but still change how text reads or runs: bidirectional controls, zero-width characters, and the invisible Unicode used to smuggle hidden payloads. Bidi controls can make code display differently from how a compiler reads it, an attack known as Trojan Source, so TinyTextEditor draws each of them as a red box and shows a warning when bidi controls are present.
The bytes are not changed. Saving keeps them exactly as they were; deleting a box deletes the character. If you didn’t expect them, it’s worth finding out where the text came from.
Why are some flag emoji shown as boxes?
The flags of England, Scotland and Wales are built from the same invisible tag characters that hidden-text attacks use. The editor can’t tell a flag from a payload without guessing, so it shows those characters as boxes. Other flags display normally.
What happens to unsaved work when I quit?
It is kept. Quitting doesn’t ask you to save; your unsaved changes and tabs come back the next time you open the app. Closing a tab still asks about saving that document.
The recovery copies are kept in the app’s sandbox container, readable only by your user account, and are removed when you save or discard the document. Documents up to 64 MB are kept this way; for larger ones, the app asks before quitting.
Where do settings live?
Press ⌘,. Settings are a commented JSON5 file that opens in the editor itself; every option is described inline, and saving the file applies your changes immediately. If the file has a syntax error, the app keeps your last good settings and reports the problem; values out of range are clamped to the nearest one allowed.
The file is inside the app’s container:
~/Library/Containers/com.fz.tinytexteditor/Data/Library/Application Support/TinyTextEditor/settings.json To go back to the defaults, quit the app and delete that file. To remove everything the app keeps, including recovery files and remembered folders, delete the whole ~/Library/Containers/com.fz.tinytexteditor folder after quitting.
Keyboard shortcuts
⌘ Command · ⇧ Shift · ⌥ Option · ⌃ Control · ↩ Return. Every command is also in the command palette, ⇧⌘P.
| Command | Keys |
|---|---|
| Goto Anything / Command Palette | ⌘P / ⇧⌘P |
| Go to Line | ⌘L |
| Find / Replace / Find in Files | ⌘F / ⌘R / ⇧⌘F |
| Find Next / Previous / Use Selection | ⌘G / ⇧⌘G / ⌘E |
| Add Selection for Next Occurrence / Unselect / All | ⌃G / ⌃⇧G / ⌃⌘G |
| Extend / Shrink Selection | ⌥↑ / ⌥↓ |
| Add a Cursor / Column Selection | ⌥⇧-click / ⌥-drag |
| Add Cursor Above / Below | ⌃⇧↑ / ⌃⇧↓ |
| Split Selection into Lines | ⇧⌘L |
| Toggle Comment / Toggle Case | ⌘/ / ⇧⌘U |
| Duplicate Line or Selection / Delete Line / Join Lines | ⌘D / ⌘⌫ / ⌃⇧J |
| Move Line Up / Down | ⌥⇧↑ / ⌥⇧↓ |
| Start New Line / New Line Before Current | ⇧↩ / ⌥⌘↩ |
| Indent / Outdent | ⌘] / ⌘[ |
| Next / Previous Tab | ⌥⌘→ / ⌥⌘← |
| Tab by Number | ⌘1 … ⌘9 |
| Reopen Closed Tab | ⇧⌘T |
| Toggle Sidebar / Word Wrap | ⌘\ / ⌥Z |
| Zoom In / Out / Actual Size | ⌘= / ⌘- / ⌘0 |
| Settings | ⌘, |
Multiple cursors also work with the mouse: Option-drag to select a column; Command-click or Option-Shift-click adds a cursor.
Known limits
Deliberate caps
So that no single command can stall the app:
| Command | Limit |
|---|---|
| Hot exit across quits | Documents up to 64 MB. Larger ones ask before quitting. |
| Copy to clipboard | 512 MB |
| Sort lines, trim whitespace, change line endings | Documents up to 256 MB |
| Per-line commands (comment, indent, join) | 2 million lines |
| Change case | 64 MB per selection |
| Next occurrence | Selections up to 64 KB |
Behavior to expect
- Highlighting looks back at most 4 MB, so a multi-line comment that starts further up than that can show unhighlighted.
- A regex match cannot span more than a scan window of about 4 MB.
- A file that isn’t valid in its detected encoding opens as raw bytes rather than being silently altered. So do legacy multibyte encodings over 256 MB.
- In a very long line, wrapping restarts at each 4 KB segment.
- If another program rewrites a large open file in place, Save warns you instead of mixing their bytes into yours.
- VoiceOver reads the text on screen by line, word and character as you move the caret, and what you type or select. A long file is read by moving through it rather than all at once.
Not included
Plugins, language servers (LSP), Git integration, a terminal and a minimap. The first four would each add attack surface or weight.
System requirements
- A Mac with Apple silicon (M1 or later). Intel Macs are not supported.
- macOS 14 Sonoma or later. Tested on macOS 26; support for macOS 14 and 15 is checked by the compiler rather than by testing on those versions.