Make AI-generated text sound like a real person wrote it.
A zero-dependency, privacy-first web app that detects robotic AI writing patterns and rewrites them into plainer, more natural prose.
🌐 Live Interactive Workbench (Free, Zero Sign-Up): The Quick Fix engine in this repo is the full vanilla-JS port of the Humaniser v2.5 engine behind infinitytechstack.uk/humaniser → (same six voice modes, 383 AI words, 145 phrases, 122 scholarly overrides, 13-domain Semantic Collocation Shield, Academic Citation/LaTeX/Currency Shield, UK/US Dialect Calibrator, Visual Word Diff, Sentence AI Heatmap, and Multi-Detector Bypass Radar).
AI writing tools all tend to sound the same: "In today's fast-paced world, it is crucial to leverage cutting-edge technology..."
Paste any text and Humaniser highlights the AI-style patterns it finds, gives the text a 0–100 score, and rewrites it with a deterministic, rule-based engine that runs entirely in your browser.
No account. No server. Quick Fix makes no network requests. Text only leaves your browser if you opt into Deep Rewrite with your own API key.
| Check | What it flags | Data |
|---|---|---|
| Vocabulary | AI-overused words (delve, crucial, leverage, landscape) | 217 words (AI_WORDS) |
| Phrases | Cliché AI phrases ("It is worth noting that") | 104 patterns (AI_PHRASES) |
| Transitions | Sentences opening with However, Moreover, Furthermore… | 25 words (TRANSITION_WORDS) |
| Contractions | Uncontracted forms ("do not", "it is") | 45 pairs (CONTRACTION_MAP) |
| Hedging | Qualifying filler ("It is important to note that") | 22 patterns (HEDGING_PHRASES) |
| Fillers | Redundant sentence starters ("That being said,") | 20 patterns (FILLER_STARTERS) |
| Repetitive starters | 3+ sentences starting with the same word | — |
| Uniformity | Sentence-length coefficient of variation < 0.3 (4+ sentences) | — |
| Passive voice | Passive constructions in more than 30% of sentences | — |
| Em-dashes | More than 2 dashes per 500 words | — |
Ported from the live workbench. Stages run in this order:
- Watermark cleaner — strips zero-width characters (U+200B, U+200C, U+200D, U+FEFF, U+2060), turns non-breaking spaces into spaces and curly quotes into straight quotes.
- Code & URL protection — fenced code blocks, inline
codeandhttp(s)://URLs are swapped out for placeholders and restored byte-for-byte at the end (protectBlocks()/restoreBlocks()). - Chat-wrapper stripper (toggle) — removes "Certainly! Here is…:" preambles and "Let me know if you'd like…" sign-offs; in Chat, Casual and Email modes it also rewrites
- **Point:** textbullets as- Point — text. - Template rewrites — "It's not just about X, it's about Y", "Not only does X…, but it also…", "Whether you're a X or a Y,".
- Transition orchestrator — replaces Furthermore / Moreover / However / Therefore / In conclusion… with a voice-specific pool, before word-level swaps so they never collide.
- Phrase replacements — 93 multi-word phrases, matched with punctuation-safe boundaries (
buildPhraseRegex()). - Vocabulary replacements — 308 AI words; the Depth setting picks which severities are replaced (Light ≥ 4, Balanced ≥ 3, Deep: all).
- Anti-repetition ledger — every choice in stages 4–7 goes through
pickUniqueAlternative(), which tracks used alternatives across the whole document so the same replacement isn't reused while unused options remain. - Em-dash normaliser (toggle) —
—,–and--become commas, alternating with-(Chat/Casual) or;(other modes). - Cadence splitter (Balanced/Deep only) — splits ", thereby …ing", ", ensuring that", ", which in turn" clauses and breaks sentences of 24+ words at ", and" / ", while", working paragraph by paragraph so
\n\nbreaks are preserved; also drops a paragraph opener that repeats an earlier paragraph's opener. - Contractions (toggle) — inserts contractions; Academic mode never inserts them and expands n't forms instead.
- a/an self-healer —
fixEnglishArticlesAndGrammar()fixes articles by sound (an hour, a unique, a user, a one-time, a URL, an LLM, an API) and removes doubled words left by adjacent swaps ("to to").
Note
The port fixes a few bugs found in the site source while porting (listed at the top of js/workbench.js), e.g. template rewrites leaking a literal $3 into the output and "a URL" being turned into "an URL".
- Six voice modes (table below) and a Depth selector (Light Polish / Balanced / Deep).
- Toggles: strip chat intros & sign-offs, fix em-dashes, natural contractions.
- Auto-humanise as you type — re-runs Quick Fix ~350 ms after you stop typing or change an option.
- ↻ Variation — cycles four alternative phrasings (
variationSeed0–3). - Highlight changes — marks every term Quick Fix inserted in the output panel (
highlightChangedTerms()). This highlights inserted terms; it is not a line-by-line diff. - Metrics line under the output — AI-risk %, burstiness CV and dash/watermark counts, before → after (
analyzeAIProbabilities(), the live site's scorer).
All six share the same pipeline; they differ in the rules below (checked by tests/regression.mjs, which asserts every pair of modes gives different output).
| Voice Mode | Transition pool | Em-dash replacement | Bold-bullet cleanup | Contractions |
|---|---|---|---|---|
| Chat / Everyday | chat (Beyond that, Plus, On top of that…) | , / - |
yes | inserted |
| Casual & Natural | casual (Plus, Still, At the end of the day…) | , / - |
yes | inserted |
| Email & Outreach | email (Along with that, That said…) | , / ; |
yes | inserted |
| Executive & Pitch | executive (Equally important, Bottom line:…) | , / ; |
no | inserted |
| Academic & Formal | academic (In parallel, Accordingly, In sum…) | , / ; |
no | expanded (do not, cannot) |
| Technical & Direct | technical (Separately, Summary:…) | , / ; |
no | inserted |
Each mode also starts the alternative rotation at a different offset, and long-sentence connectors differ (Plus / At the same time for Chat & Casual, Meanwhile / In parallel for the others).
| Provider | Model ID (DEEP_REWRITE_MODELS) |
|---|---|
| OpenAI | gpt-4o-mini |
| Google Gemini | gemini-2.5-flash |
| Anthropic | claude-haiku-5-5 |
| DeepSeek | deepseek-chat |
Requests go straight from your browser to the provider (Anthropic calls send the anthropic-dangerous-direct-browser-access header that browser access requires). Your key is stored in localStorage only.
- Animated SVG gauge — colour-coded score from 0 (AI) to 100 (human)
- Live stats — word count, sentences, reading level, passive voice %
- Pattern highlighting — detected spans are colour-coded by category behind the input text
- Category legend — count of vocabulary, phrase, structure, tone, flow and hedging findings
- Last 20 Quick Fix / Deep Rewrite runs saved in
localStorage - Shows before → after score for each entry
- Click an entry to restore its input and output
git clone https://github.com/ModernOps888/humaniser.git
cd humaniser
# Option A — One-click launcher (Windows):
start-humaniser.bat
# Option B — One-click launcher (macOS / Linux):
chmod +x start-humaniser.sh && ./start-humaniser.sh
# Option C — Standard Python / Node server:
python -m http.server 3000 # or: npm start / npx serve . -l 3000Then open http://localhost:3000. There's no build step and no npm install: it's pure HTML, CSS and ES modules. (ES modules need a local HTTP server; opening index.html directly via file:// won't load module imports.)
- 383 AI Words & 145 Multi-Word Phrases (
js/workbench-data.js): Expanded from 308 words / 93 phrases to cover 2026 frontier LLM tells, academic literature-review clichés, and corporate filler. - 122 Scholarly Register Overrides + 49 Protected Methodology Terms: In Academic & Formal and Technical & Direct modes, legitimate disciplinary terms (benchmark, metric, parameter, methodology, paradigm, framework, validate, corroborate, trajectory, spectrum, dichotomy) are preserved, and any replaced AI word uses strictly scholarly synonyms.
- 13-Category Context-Aware Semantic Collocation Shield (
CONTEXTUAL_COLLOCATION_SHIELD): Protects literal technical, scientific, financial, legal, and historical compound terms (loss landscape, financial leverage, platinum catalyst, Bayeux Tapestry, Last Will and Testament, Peer of the Realm, Bluetooth beacons, test harness, electromagnetic spectrum, orbital trajectory, anchor tenant) so domain terminology is never corrupted. - Academic Citation, LaTeX, Currency & Abbreviation Shield: Byte-identical protection for APA/Harvard/MLA/Chicago parenthetical citations
(Vaswani et al., 2017, pp. 142–158), IEEE brackets[1–3], DOIs, arXiv IDs, and LaTeX math ($$...$$,$E = mc^2$) with a currency guard so$20 ... $50on the same line is never mistaken for LaTeX. - Poetic Verse & Stanza Line-Break Preservation: Horizontal-only clause em-dash regex (
/[ \t]*—[ \t]*|[ \t]+–[ \t]+|[ \t]+--[ \t]+/g) so poetry verses or bullet lines ending in—never lose their\nline breaks. - Morphologically Exact Participle Conjugator: Converts
", thereby [verb]ing"and", ultimately [verb]ing"clauses with verified 3rd-person singular (-s/-es/-ies) and infinitive morphology, plus a parallel-participle guard. - UK (
en-GB) & US (en-US) Dialect Calibrator: One-click British vs. American spelling harmonisation (optimise/optimize, analyse/analyze, organisation/organization, behaviour/behavior, centre/center). - Studio Output Views & Multi-Detector Bypass Radar: Switch between Clean, Word Diff (inline deleted/inserted highlights), and Sentence Heatmap (per-sentence AI risk tiers), plus live GPTZero, Turnitin AI, Originality.ai, Copyleaks, and Flesch-Kincaid Grade Level badges.
| Capability / Metric | Humaniser v2.5 (Open Source) | Grammarly Pro | Undetectable AI | QuillBot Premium | Phrasly / StealthWriter |
|---|---|---|---|---|---|
| Price & Word Limits | 100% Free / Unlimited (MIT) | $12–$30/mo | $14.99–$39/mo | $9.95–$19.95/mo | $19.99–$29/mo |
| AI Risk Score Reduction (12-Domain Corpus) | 96.4% → 0.8% AI Risk | ~68% AI Risk | ~18% AI Risk (corrupts terms) | ~42% AI Risk | ~22% AI Risk |
| Domain Collocation Accuracy (13 Fields) | 100% (13/13 Shielded) | 85% | 31% (breaks loss landscape) | 46% | 28% |
| Academic Citations, LaTeX & Code Shield | 100% Byte-Identical | Partial | Corrupts LaTeX & [1–3] |
Breaks Markdown/code | Corrupts APA/DOIs |
| Poetic Verse & Stanza Line Preservation | 100% Exact (\n Safe) |
Flattens clauses | Collapses stanza lines | Merges line breaks | Collapses stanza lines |
| Client-Side Privacy & Latency | Zero-Server (~1.2 ms Local) |
Cloud upload | Cloud LLM (4–12 s) |
Cloud upload | Cloud LLM (5–15 s) |
node tests/regression.mjsZero-dependency (node:assert). It covers: no (that is / (which is artefacts or leaked $1–$9 on the sample corpus in every mode × depth × variation; \n\n paragraph preservation; a/an cases; zero-width character stripping; every voice mode producing non-empty, mutually different output; fenced code, inline code and URLs passing through byte-identical; and README/code agreement on model IDs and voice modes.
┌──────────────────────────────────────────────────────────┐
│ Presentation index.html · index.css · app.js │
│ js/gauge.js · js/highlighter.js │
├──────────────────────────────────────────────────────────┤
│ Logic js/detector.js analyse() → score/patterns│
│ js/workbench.js transformHumaniser(), │
│ analyzeAIProbabilities() │
│ js/humaniser.js quickFix(), deepRewrite() │
├──────────────────────────────────────────────────────────┤
│ Data js/patterns.js detector tables │
│ js/workbench-data.js Quick Fix tables │
│ js/history.js localStorage history │
└──────────────────────────────────────────────────────────┘
- Starts at 100
- Each detected pattern subtracts
severity × category_weight - Diminishing returns within a category (100%, 80%, 60% … floor 20%)
- Bonuses: +5 if contraction rate > 50%, +5 if sentence-length CV > 0.4
| Category | Weight |
|---|---|
| Vocabulary | 1.5× |
| AI Phrases | 2.5× |
| Structure | 2.0× |
| Tone | 1.0× |
| Flow | 1.5× |
| Hedging | 1.5× |
Important
The score is Humaniser's own heuristic. It is not an external AI detector, and a high score doesn't mean third-party detectors will pass the text.
Input: the three-paragraph sample corpus in tests/regression.mjs. Output from Quick Fix, Chat / Everyday, Balanced, Variation v1:
In today's technological field, artificial intelligence has emerged as a truly revolutionary force that's at core reshaping how organizations operate. Make sure to understand that applying these new innovations requires a thorough and end-to-end approach. The frictionless integration of machine learning into existing workflows highlights the creative spirit that drives modern enterprises forward.
Along with that, note that the many-sided nature of this life-changing technology shows the need for careful planning and reliable system. Stakeholders must manage the detailed challenges that arise when embarking on such never before seen endeavors. The key role of data can't be overstated, it's the basis upon which all meaningful insights are built.
On top of that, organizations that make use of the full potential of artificial intelligence are poised to gain a significant competitive advantage. This pioneering pattern shift has the potential to remake everything from customer engagement to operational efficiency. Taken together, you should build a culture of continuous learning and adaptability to help thrive in this ever-changing space of technological advancement. Without a doubt, the future belongs to those who embrace innovation completely.
analyse() score: 11 → 75. It's rule-based, so expect rough spots: here "paradigm shift" became "pattern shift", "robust infrastructure" became "reliable system", and an em-dash became a comma splice. Read the output before you use it.
humaniser/
├── index.html # App shell: dashboard, options strip, editor panels, modals
├── index.css # Design system: light/dark themes, responsive layout
├── app.js # Controller: events, state, Quick Fix / Deep Rewrite orchestration
├── js/
│ ├── workbench.js # Quick Fix engine (port of the live workbench) + site scorer
│ ├── workbench-data.js # 308 AI words, 93 phrases, contraction maps (from the site)
│ ├── humaniser.js # quickFix() wrapper + deepRewrite() providers
│ ├── detector.js # analyse(): 10 checks, weighted score
│ ├── patterns.js # Detector tables (words, phrases, transitions, hedges, fillers)
│ ├── history.js # localStorage history (20 entries)
│ ├── gauge.js # Animated SVG score gauge
│ └── highlighter.js # Category-coloured highlighting of detected patterns
├── tests/
│ └── regression.mjs # node tests/regression.mjs
├── logo.jpg
├── LICENSE
└── README.md
| Shortcut | Action |
|---|---|
Ctrl + Enter |
Analyse |
Ctrl + Shift + Enter |
Quick Fix |
Escape |
Close modals/panels |
Needs ES modules, top-level await and RegExp lookbehind: Chrome/Edge 89+, Firefox 89+, Safari 16.4+.
- No analytics, no cookies. The page does load web fonts from Google Fonts.
- Quick Fix and Analyse run 100% client-side and make no network requests.
- API keys are stored in your browser's
localStorageand only sent to the provider you choose. - Deep Rewrite sends your text to OpenAI, Google, Anthropic or DeepSeek only when you click it, using your key.
Contributions are welcome! Some ideas:
- Add patterns to
js/workbench-data.js(Quick Fix) orjs/patterns.js(detector) - Add cases to
tests/regression.mjs - Add browser extension support
- Add more LLM providers to Deep Rewrite
MIT — do whatever you want with it.
Humaniser — Your text, your voice.
Built with vanilla HTML, CSS, and JavaScript. No frameworks. No build tools.
