---
title: "code formatter & HubL linter for Zapier, n8n, Make - codefmt"
url: https://codefmt.dev/
updated: 2026-08-24
sources:
  - https://codefmt.dev/
licence: "© codefmt. Cite with attribution to https://codefmt.dev."
---

# code formatter and linter for automation platforms

codefmt formats and lints the code you write inside automation-platform code steps: JavaScript and Python for Zapier, n8n, Pipedream, Make, and HubSpot Data Hub, with TypeScript in n8n and Pipedream, plus HubL for HubSpot CMS templates. it wraps your snippet in the platform's runtime shell first, so top-level await, bare return, and injected globals like inputData or $input parse cleanly instead of breaking standard tools.

## what the tool does

- formats JavaScript and TypeScript with Biome and lints with oxlint
- formats and lints Python with Ruff (500+ rules, Black-compatible output)
- formats and lints HubL with a dedicated, zero-setup linter (28 rules, 7 one-click safe fixes)
- understands each platform's runtime shell and injected globals, and detects code pasted from a different platform
- formats client-side in your browser via WebAssembly; JavaScript lint diagnostics are the one server-assisted step
- ships 30+ curated code snippets, a diff view, and a command palette
- has no accounts, no sign-in, and no tracking cookies

## frequently asked questions

### what is codefmt?

codefmt is a free online code formatter and linter built for automation platforms. it formats and lints the javascript, typescript, python, and hubl you write inside code steps in Zapier, n8n, Pipedream, Make, and HubSpot. it runs in your browser, ships as a chrome and firefox extension, and has no accounts and no tracking cookies.

### why does my code break in Prettier but format fine in codefmt?

automation platforms wrap your code in an async function and inject runtime globals like inputData or $input, and they allow top-level await and bare return. standard formatters parse your snippet as a complete program, so they stop at the first bare return or top-level await, and standard linters flag those globals as undefined. codefmt wraps your snippet in the platform's runtime shell first, formats it, then strips the wrapper, so it parses cleanly.

### which automation platforms does codefmt support?

Zapier, n8n, Pipedream, Make, and HubSpot Data Hub for javascript and python code steps, plus HubL for HubSpot CMS templates. n8n and Pipedream also support typescript. select a platform tab to get its exact runtime shell, globals, and code examples.

### does codefmt lint, or just format?

both. javascript and typescript are linted with oxlint, python with Ruff (500+ rules), and HubL with a dedicated linter that catches unclosed blocks, unknown filters, deprecated tags, and js-mindset traps, with one-click safe fixes.

### is codefmt free and private?

yes. codefmt is free, with no accounts and no sign-in. javascript and python format client-side in your browser via WebAssembly, and hubl with codefmt's own in-browser formatter. javascript lint is the one server step: your code is processed in memory, never stored, never logged. there are no tracking cookies, and analytics are anonymous and aggregate.

## for agents and automation

- format API: POST https://codefmt.dev/api/format (OpenAPI: https://codefmt.dev/api/openapi.json, 50KB max code, no authentication)
- MCP server: POST https://codefmt.dev/api/mcp (tools: format_code, format_json, ask_codefmt)
- site index for agents: https://codefmt.dev/llms.txt
