PLC Lint reads a PLCopenXML export and finds what the compiler accepts without a word: a timer nobody calls, a setpoint truncated before it is used, a division by a variable that is zero, a branch that can never run. 34 checks, about 10 seconds, no signup.
🔒 You don't have to trust us. The analyzer is open source (MIT) and the local build makes no network calls at all — enforced by a test, not by a promise. Uploaded here, the file is processed in memory and never written to disk. What happens to your code →
Or run it on your own machine
Your customer's export is their property, and sending it to somebody else's server is rarely your call. So don't: the local build is one .exe — no install, no Python, no network calls at all. Drop an export onto it and the same report appears next to the file.
⬇ Download for WindowsLinux/macOS: python cli.py project.xml · MIT on GitHub
Project in git? uses: caspershes/plc-lint@v1 — the GitHub Action breaks the build on high-severity findings.
Check the whole project in batch (Pro) → · Compare versions → · Bugs explained one by one →
/0 and an unguarded divisor variablex := x — a typo or lost logic5/2 yields 2 — the fraction is droppedPT := T#0S — effectively no delay;; and similar litterEvery finding comes with suggested fixes and code examples.
5 bugs the compiler doesn't catch →