Two IAM policy JSON documents can look nearly identical at a glance and still differ in exactly one statement buried in the middle of a long array, or they can be reformatted with different key order and whitespace while being functionally identical. IAM Policy Comparison Tool compares two pasted policy documents statement by statement and reports exactly which statements were added, which were removed, and which are common to both — so you can see the real change between two policy versions instead of eyeballing a wall of JSON.
The comparison is structural, not textual: each statement is reduced to a canonical form — its Effect, its Action/NotAction list sorted, its Resource/NotResource list sorted, its Condition block, and its Principal/NotPrincipal — before being compared. That means a statement with its Sid renamed, or with its keys reordered, or with its Action array listed in a different order, is correctly recognized as unchanged. A statement is only reported as different if something that actually affects policy evaluation changed.
What this tool deliberately does not do is semantic comparison. If Policy A grants s3:Get* and Policy B grants the equivalent-in-practice s3:GetObject plus s3:GetObjectVersion written out explicitly, those are two different statements as far as this tool is concerned — it does not attempt to reason about whether one wildcard pattern subsumes another set of literal actions. That kind of "does this specific request end up allowed" question is exactly what the separate IAM Policy Simulator tool answers; this tool answers the narrower, purely structural question of what changed between two documents.
The result is broken into three lists: statements only in Policy A (removed), statements only in Policy B (added), and statements present in both (unchanged) — with a one-line identical/different verdict at the top so you can tell at a glance whether a policy edit actually changed anything.