Auto-typing that
reads as human.

DripWriter drips your text into any field with drifting, variable speed, natural pauses, fatigue, and the occasional typo it fixes. It also has a one-click pass that strips AI writing tells. Native macOS, zero dependencies.

macOS 13+ · Universal (Intel + Apple Silicon) · free & open-source (MIT)

Variable WPM Self-correcting typos Humanize pass Max Human mode Compact mode

DripWriter

Drips text into any field with human, variable-speed typing.
YOUR TEXT Compact✨ Humanize
Paste or type the text you want dripped in…
Mode SteadyNaturalMax Human
Min speed
Max speed35–75 wpm
Mistakes3%
Start delay4 s
Human rhythm, pauses & typos
Treat new lines as the Return key
Start typing
Mode: Natural — balanced human typing.

Built to read as human

Small details, all aimed at looking like a person typed it.

📈

Variable speed

Your pace is a random walk between Min and Max WPM, never a constant rate. Inconsistency is the point.

Typos it fixes

Adjacent-key slips, doubled letters, transpositions, and corrections noticed a few letters late.

Pauses & fatigue

Longer beats after sentences, thinking pauses mid-flow, and a gentle slowdown over long passages.

Humanize

One click strips AI tells: em dashes, filler, hedging, copulas, chatbot artifacts, curly quotes.

🗜️

Compact mode

Collapse to a tiny typer that stays out of your way. ⌘K to toggle.

⌨️

Native & fast

A single AppKit app. No Python, no Electron, no dependencies. Types via the system input layer.

📄

Drop in a doc

Drag a .docx, .rtf, or .txt onto the window and its text loads, paragraphs and lists intact. (Plain text, so styling isn't typed.)

Three modes

From clean and robotic to as human as it gets.

⌘1
Steady

Constant speed, no drift, no typos. When you want it clean and predictable.

⌘2
Natural

35–75 wpm, 3% mistakes. Balanced everyday human typing. The default.

⌘3 · MOST HUMAN
Max Human

15–110 wpm, 7% mistakes, planning pauses, and it drafts then goes back to edit. The works.

It drafts, then goes back to edit

A real person drafts first, then re-reads and fixes. Same here. It's grounded in keystroke-logging writing research on bursts, planning pauses (2 s+), and revision pauses.

Draft:  "The cat sat on yhe mat, and it was happy. the end."
        typed "yhe" for "the", and left "the end" lowercase
        ·  [←×5]   ·  ⌫⌫⌫The    re-read, back to the word, delete it, retype "The"
        ·  [←×27]  ·  ⌫⌫⌫the    further back, delete "yhe", retype "the"
        ·  [→×32]              cursor returns to the end
Result: "The cat sat on the mat, and it was happy. The end."   ✓

The process looks human; the final text always matches your input exactly.

The Humanize pass

Deterministic, offline cleanup. A native port of blader/humanizer.

BEFORE

Honestly, this is a testament to our team. In order to succeed, we utilize cutting-edge tools and it's important to note that we leverage data. Additionally, the platform serves as a hub that boasts a vibrant community. I hope this helps!

AFTER

This is a testament to our team. To succeed, we use cutting-edge tools, and we use data. Also, the platform is a hub that has a vibrant community.

Install

Download the prebuilt app (unzip, then right-click → Open the first time). Or build from source:

git clone https://github.com/NatePearson/DripWriter.git
cd DripWriter
./build.sh        # compiles + assembles + signs DripWriter.app
open DripWriter.app

Then grant Accessibility once in System Settings → Privacy & Security → Accessibility. The app auto-detects it.

Keyboard shortcuts

Steady / Natural / Max Human⌘1 ⌘2 ⌘3
Pause / resume typing⌘⌥P
Toggle Compact / Expand⌘K
Humanize the text⌘⇧H
Undo (incl. a Humanize pass)⌘Z
Stop typingESC