Writing a wildcard ARN by hand — for an IAM policy Resource field, a resource-based policy, or a naming convention document — is easy to get slightly wrong: one misplaced * and the pattern matches far more, or far less, than intended. Wildcard ARN Pattern Builder splits the problem into two steps that are each easy to verify: build the pattern from clearly labeled fields, then paste real ARNs and see, line by line, whether each one actually matches.
The build side is a plain form: partition, service, region, account id, an optional resource type, and a resource id field where you can type literal characters mixed with * (matches any sequence of characters, including none) and ? (matches exactly one character) — the same two wildcard characters AWS IAM policies use in Resource and NotResource statements. Those fields are assembled into one ARN string with the same structure as any concrete ARN, so a pattern like my-app-* in the resource id field with service s3 produces arn:aws:s3:::my-app-*, and a pattern with a resource type produces something like arn:aws:iam::123456789012:role/app-*. Only the resource id segment is expected to carry wildcards, but nothing stops you from leaving other fields blank the way real ARNs sometimes do — S3 bucket ARNs, for instance, have no region or account between their colons, and the builder reproduces that faithfully rather than forcing every field to be filled in.
The distinguishing feature is the second step: a live matcher. Paste one or more concrete ARNs — real ones from your account, or hypothetical ones you are checking a naming convention against — one per line, and each is tested against the pattern immediately, with a match or no-match result shown per line. The matching itself works by translating the pattern into a fully anchored regular expression: every literal character in the pattern must appear exactly where it is in the pattern, * expands to match any run of characters (including none, and including characters like / or : that would otherwise look structural), and ? expands to match exactly one character, no more and no less. That last point trips people up by hand most often — a pattern ending in app-? matches app-1 but not app-12, because ? is not a stand-in for "one or more," it is exactly one — and the live matcher makes that distinction immediately visible instead of leaving it as a source of a silent policy gap or an over-broad grant.
Because the pattern and the matcher use the exact same matching function, there is no gap between what the tool tells you a pattern will match and what it will actually match if you were to reason about it manually with the same rules — there is no separate "preview" logic that could disagree with the "real" logic. This is a small, sharply scoped tool: it builds one wildcard ARN string from form fields and tells you which of the ARNs you paste in match it. It does not evaluate full IAM policy documents, does not know about policy conditions, effect (Allow/Deny), or combined statement logic — for that, matching a resource-based wildcard is only one ingredient in the outcome.
Everything — the build, the regex translation, and every match check — runs client-side, so ARNs and account ids you paste in to test never leave the page.