Skip to content
Prabhu Raja
Developer Tools · Privacy-first

Markly — Document to Markdown Converter

A converter that turns DOCX, TXT, JSON or messy Markdown into clean, normalized Markdown, then validates the result and flags exactly what still needs a fix.

RoleDesigner & Builder
TimelineSep 2026
IndustryDeveloper Tools / Content Tools
Built withNext.jsClaude CodeVercel
01

Context

Turning a Word doc or a pasted block of inconsistent Markdown into something clean enough to commit to a repo or paste into a CMS usually means manual cleanup — fixing spacing, list markers and heading levels by hand. Markly set out to do that cleanup automatically, entirely in the browser, and to be honest about what it couldn't fix on its own.

02

The Challenge

The product needed to auto-detect and normalize several very different input formats — DOCX, TXT, JSON, and already-written Markdown — into one consistent output, while clearly separating what got fixed automatically from what still needed a human decision.

03

Research

Collected inconsistently formatted Markdown from several real sources — exported docs, scraped content, hand-written notes — and used the recurring problems (double spacing, inconsistent list markers, missing blank lines) to define what 'clean' needed to mean.

Competitive audit of document-to-Markdown converters and pandoc-based toolsDomain research into common Markdown formatting inconsistencies across editorsIterative testing of the auto-detection logic against real DOCX and JSON samples
04

Insights

The key findings that shaped the direction.

01

Format detection has to be automatic, not a dropdown

Making someone specify whether their input is DOCX, JSON or Markdown before converting adds a decision nobody wants to make — detecting it from the content itself removes a step entirely.

02

Cleaning and validating are two different jobs

Auto-fixing spacing and list markers is safe to do silently; flagging a broken link or an ambiguous heading level needs a human decision — conflating the two would make either the fixes untrustworthy or the flags noisy.

03

A validation list beats a single pass/fail

Splitting results into errors, warnings and suggestions gives someone a prioritized list to work through, instead of a single red flag that doesn't say what to do next.

05

Design Strategy

How decisions were made.

01

Auto-detect format from content, not a picker

Built detection around the input's own shape — a leading { or [ for JSON, a # for Markdown — so converting starts the moment something is pasted in.

02

Separate silent cleanup from flagged issues

Let Format Mode silently normalize headings, lists and spacing on conversion, while routing anything genuinely ambiguous into the Validation panel instead of guessing.

03

Categorize validation by what it means for the user

Split validation results into Errors, Warnings and Suggestions with a Fix All action, so a long list of issues still resolves down to a clear next step.

04

Keep every document entirely client-side

Ran conversion and validation entirely in the browser with no upload step, since the documents people convert are often internal drafts nobody wants leaving their machine.

05

Build solo, with AI as the engineering partner

Designed and built end-to-end using Claude Code as a development partner — from the format-detection logic to the validation engine — without a dedicated engineering team, while keeping every UX decision in my hands.

06

Solution

A client-side document-to-Markdown converter that auto-detects DOCX, TXT, JSON or Markdown input, normalizes formatting on conversion, and validates the result across errors, warnings and suggestions.

Automatic format detection across DOCX, TXT, JSON and Markdown input
Format Mode that normalizes headings, lists and spacing as it converts
A Validation panel categorizing issues into Errors, Warnings and Suggestions with Fix All
Live Markdown and HTML preview side by side with the source
One-click copy or .md download, with nothing ever uploaded to a server
Selected screens

A look at the work.

Markly landing page hero showing the input and output editor panes

The live product at getmarkly.vercel.app.

Markly editor showing a pasted document normalized into clean Markdown in Format Mode

Format Mode in action — headings, lists and spacing normalized on conversion.

Markly validation panel showing errors, warnings and suggestions counts

The Validation panel — errors, warnings and suggestions, with Fix All and Undo.

07

Design System Thinking

This project wasn't designed as a one-off — here's how it connects back to the system.

Components

A shared dual-pane editor component (input, live output) reused identically regardless of which source format was detected.

Tokens

A consistent severity colour scale — error, warning, suggestion — applied across the validation panel and inline issue markers.

Patterns

A detect-then-clean-then-validate pattern applied to every input, so the interaction model stays the same whether the source was DOCX, JSON or Markdown.

Governance

100% client-side processing with no upload step, so documents never leave the browser, by architecture rather than policy.

08

Impact

Markly shipped as a free, account-less alternative to manually cleaning up document exports, giving anyone converting content to Markdown a validation pass most tools skip entirely.

4Input formats supported
3Validation categories: errors, warnings, suggestions
0Documents uploaded to a server
09

Reflection

The temptation was to let Format Mode silently fix everything. Drawing a hard line between what's safe to auto-fix and what needs a flagged decision took more iteration than the conversion logic itself, but it's the reason the tool feels trustworthy instead of just convenient.

Next projectPromptTrim — AI Prompt Optimiser
View project

Have a complex challenge? Let's design something meaningful.