The error position is the point
Every JSON tool can tell you a document is invalid. What you actually need is where, and browsers are unhelpful here: the message from JSON.parse differs between Chrome, Safari and Firefox, and whether it includes a position at all has changed between V8 versions. So this tool parses twice. The browser's own parser decides validity, and if it rejects the document a second hand-written scanner re-reads the input to report the precise line and column, with the offending line shown and a caret under the character.
That second pass runs only when something is wrong, so a valid document costs nothing extra. And the messages name the actual mistake rather than the symptom: a trailing comma, a single-quoted string, a comment, an unescaped newline inside a string, and a leading zero on a number are each reported as themselves, because those five account for most hand-edited JSON failures.