Know which GitHub Actions workflows will fire — and exactly why the others won't — before you push.
Paste your GitHub Actions YAML, simulate a push or pull request, and get an instant, honest verdict for every workflow — down to the exact filter or if: condition that stops it. Runs entirely in your browser.
npx actwhy
Playground: simulate GitHub Actions triggers in your browser
paths filter instead of guessing.Advanced — commit message
contains(github.event.head_commit.message, '[skip ci]').Why didn't my GitHub Actions workflow run?
Kill the push-debug-push loop
Stop committing “fix trigger 🙏”, pushing, waiting for the runner, and finding nothing ran. Whether it's a paths filter that isn't matching, a branches pattern, or an if: condition — actwhy answers before you push, in milliseconds, offline.
Three-valued honesty
When it can't know — the changed files aren't specified, a matrix is dynamic — it says UNKNOWN, not maybe. actwhy never guesses.
GitHub's own parser
Built on @actions/workflow-parser and @actions/expressions — the same MIT-licensed libraries GitHub uses to read your YAML and evaluate ${{ }}.
How it compares to act and actionlint
Complementary tools — actwhy answers the one question the others don't: will it even trigger?
Install the CLI
npx actwhy
npm i -g actwhy
Point it at a repo and it reads .github/workflows directly — zero configuration. Same engine as this page.