Desktop · macOS + Windows · MIT

PDFs, Word files, spreadsheets and text. One window.

Scribe is a document workbench for your desktop. Open the formats that usually need four separate apps, edit them properly, and save any of them as something else. Files are read and written on your machine. When a team needs the same ones, they run their own server — there is no service in the middle either way.

Download for macOS See what it opens Apple silicon + Intel · .dmg · no account
9 formats 6 PDF tools 0 accounts 0 subscriptions

What it handles

Every row is a format that opens, edits and saves.

Not a viewer with an export button. Each of these is parsed into a real document model, edited in place, and written back out as bytes the originating application accepts.

Format What you can do Save as
PDF Paged view with thumbnails and selectable text. Fill forms, highlight, add notes, draw, sign, rotate, delete, reorder, extract ranges, merge files, watermark, set or remove a password. Convert the words, tables and pictures into an editable document — including scans, which are read with OCR and can be made searchable in place. .pdf .docx .md .html .txt .xlsx
DOCX Full rich-text editing — headings, fonts, bold and italic, lists, tables with row and column operations, links, images, alignment. Reads colour, highlight, shading, headers, footers, footnotes, comment threads and tracked changes. .docx .pdf .md .html
XLSX / XLS Multi-sheet workbooks. Edit cells, write formulas, add and rename sheets. Formulas are evaluated as you type and saved back as formulas. .xlsx .csv
CSV / TSV Cell editing in a real grid. .csv .xlsx
MD / TXT / HTML / RTF Rich-text editing, with the source format preserved on save. any of the four .docx .pdf

Save As genuinely converts. The destination is chosen before the bytes are built, so saving a Markdown file as HTML writes real HTML — not markdown text under a different extension.

How it behaves

The details that decide whether a document survives the round trip.

Annotations are written into the file

Highlights, notes, ink and signatures are real PDF annotation objects with their own appearance streams — not pixels painted onto the page. Preview and Acrobat show them, and each stays a separate object that can be taken off again. The page underneath is never touched.

HighlightNoteDrawSign

Nothing is final once placed

Adjust puts a frame round every note, drawing and signature on the page — drag the middle to move, a corner to resize. Erase reads the file rather than what the app remembers, so an annotation added last year in another application comes off just as cleanly.

Non-destructiveAny source

A PDF, turned back into a document

Convert… reads the structure back off the page: paragraphs from baselines and the gaps between them, headings from type size, bold and italic from the font each run is set in, lists from their markers, tables from text that lines up into the same columns row after row, and pictures from what the page paints. The first option opens it in a new tab, editable, with the PDF still open in its own. The rest write Word, Markdown, HTML, text, or an Excel workbook of the tables.

EditableTablesPictures

Scans are read, not refused

A scanned page holds a picture of text and nothing else. Scribe says so, offers to read it, and does — on this machine, with the language model on disk, so nothing is uploaded and no network is needed. Because the engine returns a box for every word, a scan gets the same treatment as any other page: headings, paragraphs, lists and tables all come out of it. About a second a page, with a Stop button that stops. What a scan cannot carry is bold and italic, which the recognition engine does not report.

OCROn deviceTables from scans

Spreadsheets that calculate

Type =B2*C2 and the cell shows the answer; change a number and every total that depends on it moves. A cell shows its answer and edits its question. Formulas are read from the file rather than the cached numbers beside them, and written back as formulas — so a workbook edited here still calculates in Excel. Around forty functions, references across sheets, and errors that say what went wrong: a cell depending on itself reads #CYCLE!, not a frozen application. Dates are the numbers a spreadsheet actually stores, so =B2+30 is thirty days later — and a date typed into a cell is read the way that cell already writes its dates.

Live recalculationSaved as formulasDates50 functions

A scan that can be searched

Make searchable… writes the recognised words back into the PDF itself, as invisible text sitting exactly over the picture of them. The page looks identical — nothing about the scan is altered — but selecting, copying and Find start working, in Scribe and in every other reader. Lines go in whole rather than word by word, so searching for a phrase finds it and not just its first word. Measured on a real scan, the words land back within 0.000 px of where they were read from, at any page rotation.

Invisible textFindUnaltered scan

Forms fill on sight

No tool to pick and no mode to enter. Text boxes, checkboxes, radio groups and dropdowns all work, respecting read-only fields and character limits. Values are written as real field values with their appearance streams regenerated.

AcroForm

Passwords, both directions

A protected PDF asks for its password once and then reads like any other. Set a password to lock a file with AES-256; remove one and the file on disk is rewritten with the encryption gone, so it opens everywhere afterwards. Removing a password requires knowing it — there is no cracking here.

AES-256RC4 read

Word files read as Word wrote them

The .docx archive is unpacked and its OOXML read directly: runs with their colour and size, lists rebuilt from numbering definitions, tables with their spans, images from the media parts. Headers, footers, footnotes and endnotes come back to the parts they came from, not wherever a heading suggests.

OOXMLRound trip

Comment threads and tracked changes stay intact

Replies are matched to their parents through the same paragraph ids Word uses, and resolved threads stay resolved. Tracked changes keep their author and date and are written back as revisions, so a document reviewed in Word can still have its changes accepted or rejected there.

ThreadsRevisions

Tables that survive merged cells

A table with merged cells is not a grid of elements, and documents from Word arrive with merges already in them. Every row and column operation is computed from a grid built up front: a new line inside a merged cell stretches it rather than splitting it, and deleting a column narrows the merges that crossed it.

rowspancolspan

Tabs, and a home to come back to

Any number of documents open at once, in any mix of formats. Each tab keeps its own scroll position, zoom and unsaved state, so switching back is instant. Unsaved tabs are marked with a dot and confirm before closing. ⌘⇧H returns home to your recent files without disturbing them.

⌘N⌘⇧NRecents

Opens the way you already open things

Drag a file onto the window, or double-click it in Finder or Explorer — Scribe registers itself for .pdf, .docx, .md, .csv and .xlsx. Drag an image straight onto an open document to place it. Find, zoom and an unsaved-changes guard work everywhere.

Drag & dropFile typesFind

Workspaces a company runs itself

Sharing is a small server your team runs on its own hardware — not an account with us, because there is no us. It has no dependencies at all: the database is Node's own SQLite, the password hashing is Node's own crypto, and the whole thing is one file you can copy to back it up. The first person to register administers it; everybody after them needs an invitation, because a registration page open to the office network is open to whoever else can reach the port. Viewer reads, editor writes, admin decides who else is in — and the last admin cannot leave, since a workspace nobody administers could never be administered again.

Self-hostedNo dependenciesInvitation onlyThree roles

A save never overwrites a save

Saving to a workspace records which version it started from. If a colleague saved while you were working, the server refuses yours and hands back theirs rather than picking a winner — quietly losing somebody's work is the one unforgivable bug in a document editor. The app can then answer the question properly, because by that point it has both sides parsed into paragraphs and cells: compare them difference by difference and keep whichever half of each you want, keep both, or take theirs. Every version is kept, stored under the hash of its own bytes, so one already written can never be altered.

No lost workVersion historySide by side

The renderer never touches the filesystem directly. Every read and write goes through the main process, and the document libraries are bundled locally — so the app needs no network at runtime. The one thing that does is a shared workspace, and it talks to your server and nothing else.

Security posture

Being straight with you

What it does not do yet.

"Edit every document type" is, taken literally, the scope of Microsoft Office plus Adobe Acrobat. Nobody ships that in one pass. Here is the honest edge of what is built.

Not here today

Four gaps worth knowing about

  • PDF text editing in place. Scribe does page-level surgery on PDFs, not reflowing the words inside them. Editing body text in the file itself means font subset extraction, glyph mapping and line re-layout — a project in itself, not a feature. Convert… is the way round it: the words, tables and pictures come out into a document you can edit properly.
  • Setting a cell's format. Number formats are read from the file, written back and applied on screen — but there is no picker for changing one, beyond typing a date into a cell. An unsupported function says #NAME? rather than guessing.
  • Live co-editing. Shared workspaces move whole files: you see a colleague's work when they save it, not as they type it. Two people editing at once get two versions and a comparison, not one cursor each. Roles are per workspace, so somebody who may read the workspace may read everything in it.
  • Older and other formats. No .doc (the pre-2007 binary format), .pptx or .odt yet.

Roadmap, in the order it gets tackled

  1. A number-format picker for spreadsheet cells — dates, currency and decimals, set from the toolbar rather than inferred.
  2. A durable editor core in place of document.execCommand, bringing real undo history and room for collaboration later.

Start using it on your own files, and let what annoys you first decide what gets built next.

From the README

Get it

Download the build. It asks for nothing.

Download

The macOS build ships as a .dmg for Apple silicon and Intel. It is signed — macOS will name Sulaimon Odeniran as the developer — but not yet notarised by Apple, so the first open needs right-click → Open rather than a double-click, and one confirmation. After that it opens like anything else.

Version 0.1.1. Check what you downloaded is what was put here — shasum -a 256 Scribe-0.1.1-arm64.dmg should say bcc3…c053, and the Intel build 9438…866d. The full sums are in SHA256SUMS.

A Windows installer is not built yet.

Run from source

Not yet. The repository is still private, so there is nothing to clone today and it would be a poor joke to print the command.

The download beside this is the whole application in any case: it needs no account, no server and no network, and what it does with your files it does on your own disk.

When the source opens, the build instructions land here.