Results table
The results table is the primary view after a crawl completes. Every page the crawler visited appears as a row, and every piece of extracted metadata appears as a column. The table handles tens of thousands of rows without slowing down, and its filtering, sorting, and column controls let you narrow the view to exactly the pages that need attention.
Columns
Columns are organised into four groups. The URL column is pinned to the left edge of the table and remains visible as you scroll horizontally through the other columns.
Address
Response
Content
Indexing
Every column is sortable. Click a column header to sort ascending; click again to sort descending; a third click clears the sort. Hold Shift and click additional headers to add secondary and tertiary sort keys.
Column chooser
Click the column icon in the toolbar to open the column chooser popover. Columns are listed under their four groups — Address, Response, Content, and Indexing — each with a toggle that shows or hides the entire group at once. Individual columns within a group can be toggled independently.
The chooser preserves your selection for the current session. To keep a column layout across sessions, save it as part of a saved view.
Density
Three density modes control how much vertical space each row occupies:
Switch between modes using the density control in the toolbar. The table re-renders immediately without losing your scroll position.
Filtering
The filter bar sits above the table and lets you narrow the visible rows without altering the underlying crawl data. Filters combine with AND logic — each additional filter narrows the result set further.
Text search matches against the URL, title, and meta description columns simultaneously. Type a query and the table updates as you type.
Status code filter limits rows by HTTP response class. The options are All, 2xx, 3xx, 4xx, and 5xx.
Content type filter limits rows by MIME type. The options are All, HTML, PDF, Images, and Other.
Issue toggles surface rows with specific problems:
- Missing title — pages with no
<title>element. - Missing meta description — pages with no
<meta name="description">tag. - Missing H1 — pages with no
<h1>element.
The filter bar displays the filtered count alongside the total row count (for example, "148 of 3,204 pages"). A clear button resets all active filters in one action.
Keyboard navigation
The results table supports full keyboard navigation. When the table has focus:
The table uses virtual scrolling powered by
@tanstack/react-virtual with an overscan of 10 rows.
Only the visible rows plus 10 above and below are rendered in the DOM at any
time, which keeps the interface responsive even with crawls containing tens of
thousands of pages.
Export
Two export paths are available, each suited to a different workflow:
Export selected writes the checked rows to a CSV file on the client side. It includes all columns regardless of which are currently visible in the table. Use this when you need a subset of the crawl — for example, only the pages with missing titles, or a range you selected with Shift+click.
Export all streams the full crawl data from the backend as CSV. This path is available for completed sessions and includes every row and every column. Use it for archiving a full crawl, importing into a spreadsheet for reporting, or comparing two crawls side by side.
Both exports produce the same columns in the same order so that files from either path can be compared or combined without column-mapping. See Export for format details and the full column list.