apache · htaccess · indent · live

Format Apache config files

Tracks nested <VirtualHost> / <Directory> / <IfModule> blocks and aligns child directives at the right depth. Runs locally.

Apache Config Formatter
Input
220 B
10 lines
Output
261 B
11 lines
Status
ready
live
Ratio
1.19×
out/in
input · apache config
output · indented config
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog logs/example_error.log
</VirtualHost>
Quick Start

How to format Apache config

Apache uses XML-style sections like <VirtualHost> and <Directory>. The formatter tracks open/close tags and indents child directives accordingly.

  1. 01

    Paste config

    .htaccess, httpd.conf, or any include file. Mixed indentation is fine.

    Parsing runs through Prettier’s standalone bundle (or the language-specific equivalent) loaded lazily — no parser ships until the tool is opened.

    apachePrettierASTstandalonelazy
    input · sourceraw · AST
    <VirtualHost *:80>
    ...
    loaded · parsedAST · ready
  2. 02

    Pick indent width

    4 is the common default; 2 is denser for nested blocks.

    Indent width, tab style, and print-width re-format through a memoised pass — switching 2 → 4 spaces never re-parses, only re-prints.

    optsindentprint-widthmemoisedlive
    opts · optionsindent · live
    indent=4
    options applied · livelive
  3. 03

    Blocks reflow

    {<Directory> opens, child directives indent, </Directory> dedents.}

    The formatter is deterministic and idempotent: running it twice produces byte-identical output, which keeps diffs and git noise to a minimum.

    liveidempotentdeterministicdiff-cleanstable
    out · formatteddepth · ready
        AllowOverride All
    formatted · liveidempotent
  4. 04

    Copy or save

    Drop into /etc/apache2 or your .htaccess. Source never leaves your tab.

    Download writes a Blob with the language-appropriate extension; copy uses navigator.clipboard.writeText so the output preserves all whitespace exactly.

    exportclipboardbloblanguage MIMEclient-side
    ok · copiedready · done
    ✓ Copied
    shipped · ready to shipsuccess
Pro tips

Formatting tips that keep diffs sane

Pick one config and pin it

Inconsistent formatting causes diff churn. Commit .prettierrc / .editorconfig and enforce in CI.

Format on save

Editor integration is faster feedback than a pre-commit hook. Use both for belt-and-braces.

Idempotency matters

Running the formatter twice should produce identical output. Test this on a representative file.

Match the language community

Default to community conventions: 2 spaces for JS/CSS, 4 for Python, tabs for Go. Fights over indent are a productivity tax.

Print-width drives wrapping

80, 100, and 120 are the common targets. Wider lines parse fast but review slower side-by-side.

Don&rsquo;t mix formatters and linters

Prettier handles whitespace; ESLint handles correctness. Disable overlapping rules to avoid fight-club configs.

Use Cases

When to format Apache

vhosts, htaccess audits, infra reviews.

VHost review

Audit a long virtual-host file with deeply nested IfModule blocks. Idempotent: running the formatter twice produces byte-identical output, which is the foundation of a clean CI gate. Pair with a pre-commit hook so PRs arrive already formatted, focusing review on logic.

idempotent

.htaccess cleanup

Tidy rewrites and redirects after years of accretion. Pairs with EditorConfig + .prettierrc for end-to-end consistency. Whitespace-only changes vanish so reviewers see real diffs, and git blame stays honest about who wrote what.

CI-ready

Migration

Format an Apache config before translating to nginx. Output respects your indent width, tab style, and print-width — settings carry over for repeat runs. Switching 2-space to 4-space costs nothing in CPU but standardises an entire codebase.

diff-clean

Documentation

Embed clean config snippets in runbooks and READMEs. Format-on-save is the fastest feedback loop; CI is the safety net. Together they make inconsistent indentation a thing of the past and free up review cycles for genuine concerns.

PR-friendly

Diff readability

Indent both sides of a config diff before comparing. Whitespace-only changes don't trigger downstream content-hash invalidations, so CDN cache keys and CI cache layers stay warm. Real changes get all the rebuild budget.

review-ready

Compliance

Capture canonical config for change-control records. Pairs with linters (ESLint, Stylelint, pylint) that catch what formatting alone can't — bugs, unused imports, dead code. Each tool stays in its lane, and the codebase stays clean.

deterministic
FAQ

Frequently asked questions

No. Use apachectl -t or apache2ctl configtest after editing to catch real errors.
Both are XML-style sections, handled the same as VirtualHost — open tag indents, close tag dedents.
# comments keep their depth at the surrounding block level. Inline comments are left untouched.
No — directive order matters in Apache (e.g. RewriteRule chains), so order is preserved.
No — formatting runs locally in your browser tab.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!