Most teams underestimate docs migration. This playbook makes the work measurable, de-risks the messy middle, and gets you to a Git-native, multi-format pipeline without stalling delivery. Use the calculator, run a 10-doc pilot, then scale in waves.
Estimating Your Migration Workload
Before diving into conversion tools and processes, you need a realistic understanding of the effort involved. Migration planning often fails because teams underestimate the complexity or overestimate what automation can achieve. We built an interactive calculator to make scope concrete. This tool considers both manual and automated migration approaches, factoring in setup time, conversion rates, and post-processing cleanup.
How the Calculator Works
The calculator evaluates three scenarios based on real-world migration data. The calculator recommends an approach based on your inputs and shows potential time savings. Remember, these are estimates. Your actual results will vary based on document complexity and team experience.
The key variables that determine your migration effort are:
- Volume: Total pages to convert
- Team capacity: Available people and their weekly time commitment
- Format complexity: Simple text vs. heavily formatted documents with tables, images, and custom layouts
- Automation potential: How consistent your source documents are
Your 30-Day Migration Roadmap
Audit Your Documentation Landscape (The Step Everyone Skips)
I know you want to jump straight into conversion after seeing your estimates. Don’t. Start with a comprehensive discovery sprint that inventories every single file.
Here’s the audit checklist:
- Location mapping: Document where files live (network drives, SharePoint, Confluence, random emails). Create a simple spreadsheet with columns for location, format, owner, last update, and dependencies.
- Dependency detection: Sample 10% of your documents to reveal hidden landmines. Embedded fonts, cross-repository links, custom macros, and that one critical diagram that’s actually a screenshot of a file nobody can find.
- Risk classification: Tag each document as compliance-critical, customer-visible, or internal reference. This determines your migration order and review requirements.
- The binary hunt: Find all embedded media. That innocent-looking Word doc might contain 50 MB of uncompressed images that will blow up your Git repository.
- Missed files and silent dependencies: These are the #1 cause of migration overruns. Is your API documentation pulling examples from a deprecated codebase?
Set aside adequate time for this audit phase. A thorough inventory now prevents crisis management later.
Why AsciiDoc? The Complete Business Case
Now that you understand your migration scope, let’s address why AsciiDoc is worth the effort. Here’s what makes it the superior choice for technical documentation:
We migrated 48.000 pages of documentation from DITA to AsciiDoc. We moved from a heavyweight, XML-based system that required specialized tools to a lightweight, text-based format that integrates seamlessly with our development process. The learning curve was minimal, but the productivity gains were substantial. Our writers can now focus on content instead of wrestling with complex markup, and our developers actually contribute to documentation because the workflow feels natural.
Jodie Landes, Ping Identity
Single-Source Publishing That Actually Works
Write once, publish everywhere. This isn’t just marketing speak with AsciiDoc, it’s reality. Unlike Markdown’s fragmented ecosystem or Word’s format lock-in, AsciiDoc provides semantic markup that translates consistently across HTML, PDF, EPUB, and DocBook outputs.
The key is separating content from presentation. Your writers focus on structure and meaning while your stylesheets handle formatting. Update a PDF theme globally once; rebrand HTML via a single CSS file.
Git-Friendly Collaboration
Plain text changes everything for documentation collaboration. Every edit is trackable, mergeable, and reviewable through standard Git workflows. Developers can submit documentation improvements alongside code changes. Technical writers can use the same powerful tools developers use for collaboration.
Compare this to Word’s track changes (which break on large documents), Google Docs’ limited version history, or Confluence’s clunky revision system. With AsciiDoc, your documentation gets the same collaboration benefits as your codebase.
Powerful Modularity and Reuse
AsciiDoc’s include mechanism solves content reuse elegantly. Maintain a single legal disclaimer across 50 documents with one source file. Pull live code examples directly from your repository. Create modular documentation that stays in sync automatically.
Need to update a procedure referenced in multiple guides? Change it once, rebuild everything. Word’s master documents promise this but deliver corruption and headaches instead.
Future-Proof Investment
Plain text files will be readable in 20 years. Your AsciiDoc content will migrate to whatever tools replace today’s processors. Compare this to proprietary formats that become unreadable as software evolves.
Developer-Friendly Workflow
This might be the most important benefit: developers actually contribute to AsciiDoc documentation. The familiar plain text, Git-based workflow removes friction.
And a lot more
AsciiDoc scales from simple documentation to complex publishing requirements:
- Mathematical equations with AsciiMath or LaTeX
- Diagram generation with PlantUML, Mermaid, or Graphviz
- Conditional text for multiple audiences
- Custom extensions for specialized needs
- Professional PDF output with advanced typography
Clean and Normalize Before Converting
Garbage in, garbage out. Every hour you spend cleaning saves three hours downstream. Here’s our pre-conversion cleanup checklist that prevented countless headaches:
- Strip the cruft: Remove tracked changes, embedded fonts, speaker notes, and those mysterious proprietary comments that nobody remembers adding. Use Word’s Document Inspector or LibreOffice’s cleanup tools.
- Flatten heading hierarchy: Enforce consistent structure where H1 = chapter, H2 = section, H3 = subsection. Fix those documents where someone used H4 because they liked how it looked.
- Normalize media handling: Extract all embedded images, convert to web-friendly formats (PNG/SVG), and rename to lowercase-hyphenated-names. Store them in a parallel folder structure that mirrors your docs.
- Semantic markup prep: Replace visual formatting with semantic intent. That bold text—is it emphasis, a UI element, or a term definition? Tag it appropriately now, not after conversion.
- Link inventory: List all internal and external links. You’ll need this for validation later, and it helps identify circular dependencies.
Helpful pre-conversion regex examples (adjust to your corpus):
- Convert “styled” UI labels to roles:
([A-Z][A-Za-z0-9 ]+) → [ui]#\1# - Normalize heading levels: map Word styles to
==/===/====consistently before Pandoc/Kramdoc.
Convert Content to AsciiDoc (The Right Tools for Each Format)
If you are wondering which tool to use for which language, this section is for you:
- Pandoc for Word/HTML/LaTeX: The Swiss Army knife of document conversion. Handles 90% of cases well. Extend with Lua filters for custom transformations (like converting Word styles to AsciiDoc roles).
- Kramdoc for Markdown: Purpose-built for Markdown-to-AsciiDoc conversion. Preserves GitHub-flavored Markdown extensions and Confluence-style macros better than Pandoc.
- docbookrx for DocBook: If you’re coming from DocBook, this is your tool. Maintains structure and semantic markup beautifully.
- Manual for complex layouts: Multi-column layouts, complex nested tables, and heavily formatted documents often convert so poorly that starting fresh is faster.
Reality check: No automated conversion is perfect. Budget 2-4 hours of cleanup per 100 pages of complex documentation. Simple reference docs might need just 30 minutes per 100 pages.
Validate, Fix, and Test Your Converted Documentation (One Checklist)
Use a single checklist that combines cleanup + validation so nothing leaks to production. Prioritize issues and automate wherever possible.
| Priority | Issue Type | Examples | Tools | Fix Timeline |
|---|---|---|---|---|
| Must-Fix | Broken functionality | Missing includes, broken links, malformed syntax | asciidoctor —dry-run, html-proofer | Before ANY deployment |
| High | Structure problems | Heading skips, duplicate IDs, missing images | asciidoctor-lint, custom scripts | Before production |
| Medium | Consistency issues | Inconsistent terminology, formatting variations | Vale, style guides | Within first month |
| Low | Style preferences | Passive voice, word choice, Oxford commas | Vale, write-good | Ongoing improvement |
Post-conversion checklist (excerpt):
- Internal link validation after HTML build (
--check-internal-hash). - Image path verification and integrity checks.
- Table reconstruction for complex cases; add
colsand options. - Code blocks have language hints for syntax highlighting.
- Special content (equations, diagrams, callouts) renders in local and CI builds.
#!/usr/bin/env bash
set -Eeuo pipefail
IFS=$'\n\t'
ERRORS=0
shopt -s globstar
shopt -s nullglob
need() { command -v "$1" &>/dev/null || { echo "Error: $1 not installed"; exit 1; }; }
echo "Checking dependencies..."
need asciidoctor
need htmlproofer || need html-proofer || true
need vale || true
echo "✓ Dependencies checked (some optional)"
echo ""
echo "Checking AsciiDoc syntax..."
adoc_files=(docs/**/*.adoc)
if [ ${#adoc_files[@]} -eq 0 ]; then
echo "Warning: No .adoc files found in docs/"
exit 0
fi
for file in "${adoc_files[@]}"; do
if asciidoctor --safe-mode=safe --dry-run "$file" 2>&1 | grep -q "ERROR"; then
echo "✗ $file has syntax errors"
((ERRORS++))
else
echo "✓ $file"
fi
done
echo ""
echo "Building HTML for validation..."
mkdir -p build/html
if ! asciidoctor docs/index.adoc -D build/html; then
echo "HTML build failed"
exit 1
fi
echo "✓ HTML build successful"
echo ""
echo "Checking links..."
if command -v htmlproofer &>/dev/null; then
htmlproofer ./build/html \
--checks "Links,Images,Scripts" \
--check-internal-hash \
--ignore-urls "/^http:\/\/localhost/" \
--typhoeus '{"timeout": 30}' || ((ERRORS++))
fi
echo ""
echo "Checking style guide compliance..."
if command -v vale &>/dev/null; then
vale --glob='docs/**/*.adoc' --minAlertLevel=error docs/ || ((ERRORS++))
fi
echo ""
echo "========================================="
if [ $ERRORS -gt 0 ]; then
echo "Validation failed with $ERRORS errors"
exit 1
else
echo "✓ All validations passed!"
fiIntegrate AsciiDoc into Your Publishing Pipeline
A migration isn’t complete until your docs are building automatically and deploying seamlessly:
- Repository structure:
/docsfor content,/docs/_partialsfor reusable snippets,/docs/imagesfor media,/themesfor styling. Keep it predictable. - Build automation: Simple Makefile with targets for different outputs.
make htmlfor web,make pdffor print,make allfor everything. - CI/CD pipeline: GitHub Actions workflow that builds on every push, validates links, and deploys to staging. Production deployments triggered by tags.
- Version alignment: Tag documentation with the same version as your product. Customers using v2.3.1 of your software should easily find v2.3.1 docs.
- Review workflow: Documentation PRs require technical review (accuracy) and editorial review (clarity). Use CODEOWNERS file to auto-assign reviewers.
Train Your Team Without the Pain
The technology is only half the battle; you need your team on board:
- Start small and practical: Skip the 2-hour “Introduction to AsciiDoc” presentation. Instead, do a 30-minute brown-bag lunch where you convert a real document together. Show the problem, demonstrate the solution, let them try it.
- Provide survival tools: Create a one-page cheat sheet with the 20 most common AsciiDoc elements your team uses. Not everything AsciiDoc can do, just what they need this week.
- Pair on first contributions: Sit with each team member for their first AsciiDoc PR. The confidence boost from successfully merging that first contribution is worth the time investment.
- Set up guardrails: Configure your editor with AsciiDoc preview, install linters, set up snippets for common patterns. When adoc Studio highlights a syntax error in real-time, writers learn the correct syntax naturally instead of discovering issues during build.
- Definition of Done update: Add “Documentation builds without warnings” to your team’s DoD. This makes quality everyone’s responsibility, not just the tech writer’s problem.
- Weekly office hours: Create dedicated time slots where anyone can drop in with AsciiDoc questions. Some weeks nobody shows up; other weeks you solve critical blockers. The predictability matters more than the attendance.
Add two adoption mechanisms that scale:
- RACI for docs PRs: Author = feature owner; Reviewer-Tech = dev lead; Reviewer-Style = writer; Approver = PM.
- DoD enforced in CI: No Must-Fix issues; <1% broken links; build ≤ 10 min; Vale errors = 0.
Measure Success with Metrics That Matter
How do you know if your migration succeeded? Based on numerous AsciiDoc migrations we’ve observed, teams consistently track these key performance indicators to measure their progress:
| Key Performance Indicator | What to Measure | Expected Trend |
|---|---|---|
| Build time | Minutes from commit to published docs | Typically drops 70-85% within first quarter |
| Broken link rate | Percentage of invalid internal/external links | Reduces to under 1% with automated validation |
| Time to publish updates | End-to-end from edit to production | From days to hours or minutes |
| Documentation contributions | PRs/commits from non-writers | Often increases 5-10x as barriers drop |
| Translation costs | Cost per page for localization | Decreases 20-40% with consistent structure |
| Support ticket volume | Doc-related support requests | Typically drops 40-60% with better findability |
| Writer onboarding time | Days to first production contribution | Reduces from weeks to days |
The metrics that consistently surprise teams: Documentation contributions from developers typically increase dramatically once the Git-based workflow removes friction. Teams report that support tickets drop significantly as consistent structure and better search capabilities make information easier to find.
Hidden benefits that emerge over time: The ability to quickly onboard new technical writers becomes a major advantage. Simple text-based search across all documentation for terminology updates saves hours. And perhaps most importantly, the improved collaboration between writers and developers fundamentally changes how teams think about documentation—from a chore to an integrated part of the development process.
When AsciiDoc Isn’t the Right Fit (Read This Before You Commit)
AsciiDoc shines for developer-adjacent teams and multi-format pipelines. If you need strict DITA specialization and CCMS governance (keys, maps, conrefs with workflows), mandatory WYSIWYG in Confluence for all contributors, or your organization has no appetite for Git across non-technical roles, keep DITA/CCMS or go hybrid: SMEs draft in Confluence, final source lives in AsciiDoc with scripted sync.
Common Pitfalls and How to Avoid Them
Pitfall 1: “We’ll fix it after conversion”
No, you won’t. Technical debt compounds. That “temporary” workaround becomes permanent. Fix structural issues before or during conversion, not after.
Pitfall 2: Converting everything at once
Instead, migrate in waves: start with internal docs, then API references, then user guides. Each wave teaches you something for the next.
Pitfall 3: Ignoring the build time budget
Unoptimized images, synchronous processing, and no caching. Set a build time budget and optimize relentlessly to hit it.
Pitfall 4: Forgetting about search
Your beautiful new docs are useless if users can’t find anything. Plan your information architecture, set up proper anchors, and implement search from day one.
Pitfall 5: Underestimating review time
Legal and compliance reviews don’t get faster just because you changed formats. Build review cycles into your timeline. Flag compliance-critical content early.
Risks & Mitigations (What Actually Breaks in Production)
| Risk | What Actually Happens | Mitigation Strategy |
|---|---|---|
| URL changes / SEO loss | Page URLs change, breaking external links and losing search rankings | Create 301 redirect map, regenerate sitemap, resubmit to Google Search Console, monitor top 100 landing pages for 30/60/90 days |
| Anchor drift | Internal cross-references break when headings change | Use explicit [[id]] anchors for all headings, maintain legacy ID mapping file |
| Repository bloat | Binary files and images make Git repo unwieldy | Implement Git LFS for media, set image size budgets, run periodic git gc |
| Accessibility regression | Missing alt text, poor contrast, broken heading hierarchy | Enforce alt text policy, automate color contrast checks, lint heading order |
| Localization breakage | Translation memory mismatches, increased costs | Maintain termbase/glossary, use segment-stable includes, freeze IDs before translation cycles |
| License compliance gaps | Unclear rights for embedded media and content | Inventory all media licenses during audit phase, store license proofs with assets |
| Build time creep | Gradual slowdown as docs grow | Set 10-minute build budget, track times in CI, implement image minification in pipeline |
The Tool Question: Build vs. Buy
Let’s address the elephant in the room: tooling. You have three paths for your AsciiDoc workflow:
Option 1: Command-line Asciidoctor
Free, powerful, infinitely customizable. Perfect if your team loves terminals and you have time to build your own toolchain. We started here.
Option 2: General-purpose editors with plugins
VS Code with AsciiDoc extension, IntelliJ with AsciiDoc plugin, etc. Good middle ground. Works well for developer-heavy teams already using these tools.
Option 3: Purpose-built AsciiDoc editors
This is where we ended up with adoc Studio. The decision came down to three factors: real-time preview without configuration, single stylesheet for all output formats (maintaining separate CSS for HTML and PDF was killing us), and the ability to hand it to non-technical writers without a day of setup.
Your choice depends on team composition and complexity. Developer-only team writing API docs? Command-line tools might be perfect. Mixed team with designers, writers, and subject matter experts? You’ll want something more approachable.
Conclusion: Your Documentation Deserves Better
Our documentation used to be scattered across multiple formats and tools, making maintenance a constant struggle. Today, it’s a strategic asset that enhances our development workflow rather than hindering it. Writers focus on content instead of fighting with tools, developers contribute naturally through familiar Git workflows, and our documentation stays current with our product. Every day you delay is another day of accumulated technical debt.
Start with one document. Run it through conversion. Fix the obvious issues. Build to multiple formats. Share it for review. Then do another. Momentum beats perfection.
Resources and Next Steps
Ready to dive deeper? Here are some further reading recommendations:
- adoc Studio: If you’re considering purpose-built tools, see what’s possible beyond command-line.
- Asciidoctor User Manual: The definitive reference. Bookmark the syntax quick reference.
- Asciidoctor PDF: If you need print output, start here. The theming guide alone will save you days.
- Pandoc Filters Documentation: Essential for customizing conversion. The Lua filter examples are invaluable.
- AsciiDoc vs. Markdown comparison: For convincing stakeholders who ask “Why not just use Markdown?”
- Kramdoc (kramdown-asciidoc): The best Markdown-to-AsciiDoc converter we found.
- Vale documentation linter: Enforce style guides automatically. Start with their built-in Microsoft style.