HAProxy · VS Code, Cursor, VSCodium

Catch HAProxy config errors before reload

HAProxy Config validates your haproxy.cfg against the HAProxy version you actually run — 2.4 through 3.4 — while you edit. Then haproxy -c confirms it.

  • MIT licensed
  • No telemetry, no network calls
  • 248 installs on VS Code Marketplace (observed 2026-09-29)
  • Latest release v0.6.0

Diagnostics while you edit

Diagnostics appearing while editing an HAProxy configuration in VS Code
Errors and warnings appear in the editor and the Problems panel as you type.
Warning for a default_backend that points to a backend that is not defined
A reference to a backend that does not exist is flagged at the exact line.

Mistakes that usually surface during a reload

  • A directive your HAProxy version does not have

    global
        ssl-propquery x

    HAProxy 2.8: Unknown directive 'ssl-propquery x'. It may be available since HAProxy 3.0.

  • Deprecated directives

    global
        master-worker

    HAProxy 3.4: 'master-worker' is deprecated since HAProxy 3.3.

  • References to backends that do not exist

    frontend fe
        bind :80
        default_backend missing

    HAProxy 3.4: 'missing' is referenced by 'default_backend' but no backend or listen section named 'missing' is defined in this file.

  • Timeouts without a unit

    defaults
        timeout connect 5000

    HAProxy 3.4: 'timeout connect 5000' is 5000 milliseconds. HAProxy reads a time value with no unit as milliseconds. Write '5000s' for 5000 seconds, or add an explicit unit (us, ms, s, m, h, d).

  • Ports out of range

    frontend fe
        bind :99999

    HAProxy 3.4: Port 99999 is out of range. Valid ports are 1-65535.

The editor is the fast loop; HAProxy is the final word

Editor diagnostics cannot see your environment variables, certificates, maps or build options. Before every reload, run the same HAProxy binary production uses:

haproxy -c -V -f /etc/haproxy/haproxy.cfg

In CI, check the file with the image that matches production:

docker run --rm -v "$PWD":/cfg:ro haproxy:3.2 haproxy -c -f /cfg/haproxy.cfg

Validate against the version you deploy

Set haproxy.version in .vscode/settings.json, for example "haproxy.version": "2.8".

BranchUpstream statusDefault package in
3.4LTS, maintained until 2031-Q2—
3.3Stable, maintained until 2027-Q1—
3.2LTS, maintained until 2030-Q2Ubuntu 26.04
3.1Unmaintained since 2026-Q1—
3.0LTS, maintained until 2029-Q2Debian 13
2.8Critical fixes only until 2028-Q2Ubuntu 24.04
2.6Critical fixes only until 2027-Q2Debian 12
2.4Unmaintained since 2026-Q2Ubuntu 22.04

Status from haproxy.org and distro packages from Repology, checked October 2026.

Still on the 2019 HAProxy extension?

Featurebmarkovic.haproxyHAProxy Config
Latest release0.1.2 (March 2019)0.6.0 (October 2026)
Syntax highlighting and snippetsYesYes
Validation for your HAProxy versionNo2.4 through 3.4
Context-aware completion and hover documentationSnippets onlyYes
Go to definition, references and renameNoYes
Quick fixes and formattingNoYes
Available on Open VSX (Cursor, VSCodium)NoYes

Based on both public Marketplace listings, October 2026. Switch in two commands:

code --uninstall-extension bmarkovic.haproxy
code --install-extension gmm.gmm-haproxy-vscode

Runs entirely in your editor

No telemetry, no account and no network calls. The only link it ever opens is the Marketplace review page, and only if you click it.

Questions

Does it replace haproxy -c?
No. The editor catches mistakes while you type; haproxy -c run with the same binary and files as production is still the final check before a reload.
Which HAProxy versions are supported?
2.4, 2.6, 2.8, 3.0, 3.1, 3.2, 3.3 and 3.4. Set haproxy.version to the version that will load the file, so diagnostics match that release.
Does it work in Cursor or VSCodium?
Yes. Install it from Open VSX, where it is published as gmm/gmm-haproxy-vscode.
Will it take over my nginx or other .conf files?
No. Since 0.6.0 it recognizes haproxy.cfg, haproxy*.cfg and files under a haproxy/ directory by name, and other .cfg or .conf files only when they contain an HAProxy section header. Other formats keep their own language.
Does it support Ansible or Jinja templates (.cfg.j2)?
Not yet. Template syntax is not parsed, so validate the rendered configuration instead.
Is it free?
Yes. It is MIT licensed, makes no network calls and collects no telemetry. The source is on GitHub.