Makefile Linter

Makefile Linter

Lint a GNU Makefile for the classic tab-vs-spaces "missing separator" mistake, duplicate target definitions, undefined variables and target references, and phony-looking targets missing from .PHONY; or generate a starter Makefile from a Node.js/Go/Generic preset with editable variables, .PHONY targets, and target dependencies — entirely client-side.

Paste a Makefile above to check for the tab-vs-spaces "missing separator" mistake, duplicate targets, undefined variables and targets, and missing .PHONY declarations.

Client-side heuristic linter for GNU Makefiles — checks recipe-line tab/space separators, duplicate target definitions, targets/variables referenced but never defined, and phony-looking targets missing from .PHONY. It parses line-by-line rather than running a real Make preprocessor, so "undefined target" findings are informational — they may simply be real files that exist on disk.

Makefile Linter

Lint a GNU Makefile for the classic tab-vs-spaces "missing separator" mistake, duplicate target definitions, undefined variables and target references, and phony-looking targets missing from .PHONY; or generate a starter Makefile from a Node.js/Go/Generic preset with editable variables, .PHONY targets, and target dependencies — entirely client-side.

Common uses

  • Find the missing tab causing "*** missing separator"
  • Check for targets missing from .PHONY
  • Spot a duplicate target definition
  • Generate a starter Makefile for a Node.js project
  • Generate a Makefile with build/test/clean targets and dependencies

Also searched as

  • makefile linter online
  • makefile missing separator fix
  • makefile tabs vs spaces error
  • makefile syntax checker
  • makefile phony targets check
  • makefile duplicate target
  • makefile undefined variable
  • generate makefile for node project
  • makefile template for go
  • starter makefile build test clean

Frequently asked questions

Why do I get '*** missing separator' in my Makefile?

It usually means a recipe line starts with spaces instead of a tab. The linter flags those lines.

What else does the linter check?

Duplicate targets, undefined variables and target references, and phony-looking targets missing from .PHONY.

Can it generate a Makefile?

Yes, the Generate tab builds a starter Makefile from a Node.js, Go or Generic preset with editable variables and dependencies.

Does it run make?

No, it lints the pasted text only, in your browser.

Is my data uploaded to a server?

No. This tool runs entirely in your browser — your input is processed locally on your device and is never uploaded or stored on a server.