IIS writes its access logs in the W3C Extended Log Format — a header block of #Software, #Version, #Date and #Fields lines, then space-delimited data rows. The #Fields line names the columns, and because IIS site administrators can add, remove or reorder fields in the logging configuration, no two servers necessarily log the same set of columns. IIS Log Converter reads that header and maps each column by name rather than assuming a fixed layout, so a file with a custom field list (an extra cookie or referrer column, for example) still converts correctly. Paste the log with its #Fields header included — without it, the converter has no way to know what each column means, and rows before the header are reported as failures rather than guessed at.
Rows become structured records: remote host, port, authenticated username, request method, HTTP status and substatus codes, the Windows sc-win32-status error code, response bytes and time taken (all coerced to numbers where the column is numeric, not left as strings). The separate date and time columns IIS logs by default are merged into a single timestamp field — a date-only row with no time column is still preserved as a plain date field rather than silently dropped. When both cs-uri-stem (the path) and cs-uri-query (the query string) are present as separate columns — the normal W3C layout — they’re combined into one path field like /search?q=logs&page=2, so you don’t have to reassemble the full URL yourself; a bare - in either column (meaning “no query string”) is handled correctly and doesn’t leak a literal dash into the path.
Apache-style - placeholders, which IIS also uses for empty fields such as a missing username or referrer, are handled the same way as in the other converters here: with Skip ‘-’ placeholders checked, those fields are left out of the record; unchecked, they appear as explicit null. Rows whose column count doesn’t match the #Fields header — a truncated line, a manually edited log, a row from a different logging configuration mixed into the same file — are skipped and reported with their line number rather than mis-mapped into the wrong columns.
Output is JSON (pretty, compact or JSONL) or CSV with a comma, semicolon, tab or pipe delimiter. Timestamps can stay as the raw merged date/time string, convert to UTC ISO 8601, or come out as Unix milliseconds. Everything runs locally in your browser — paste a log, convert, copy or download, with nothing ever sent to a server.