Text Entry Transparency

Human Typing

Natural rhythm. Variable cadence.

Humans type with pauses, corrections, and variable speed.

Pasted Content

Instant, mechanical arrival.

AI-generated or copied text arrives all at once.

The Solution

WriteTrack shows you the full picture.

Understand how text was composed.

~118KB
Gzipped (JS + WASM)
0
Dependencies
<1ms
Per keystroke
100%
Client-side
$npm install writetrack
See how people (and bots) actually type

WriteTrack attaches to your text inputs and collects keystroke timing data – you decide what to do with it.

Timing intervals
The milliseconds between each keystroke
Rhythm variance
How consistent or erratic the cadence is
Correction patterns
Backspaces, rewrites, hesitation
Clipboard events
Paste, copy, cut, and selection tracking
Four lines to instrument any input

Instantiate with an element. Call getData() when you need the data. Works with any text input or textarea, framework-agnostic—vanilla JS, React, Vue. TypeScript definitions included.

quickstart.js
import { WriteTrack } from 'writetrack'

const el = document.querySelector('#response-field')
const tracker = new WriteTrack(el)

// On form submit
const data = tracker.getData()
Architecture

Runs where your code runs

WriteTrack is a browser library. It doesn't talk to any server – data stays in the page until you move it.

Drop into any text box

Import and instantiate. Works with any <input>, <textarea>, or contenteditable.

Offline licensing

License validates locally with no phone-home. Works air-gapped. Deployed once, runs independently.

Hiring & Assessment

Add WriteTrack to your custom application fields to differentiate between ideal candidates and bulk copy-pasters.

Insurance & Claims

Highlight unusual input patterns to gain a new perspective on claim notes and accompanying materials.

Content Platforms

Was that content actually written by the user or just dumped in from somewhere else?

Survey & Research

Add an extra layer of helpful metadata when reviewing survey responses at scale.

Try it locally - it's free