What is List Virtualization (Windowing)?
Render only the rows that are visible, so huge lists stay fast.
Type a tool name, format or task
Render only the rows that are visible, so huge lists stay fast. Interactive step-by-step animation with JavaScript code, complexity and front-end use cases.
Loading animation...
Render only the rows that are visible, so huge lists stay fast. Read the scroll position and the height of one row. Calculate the first and last visible row, plus a few extra (overscan). Render only those rows and position them with padding or transforms. Time complexity: O(visible rows). Space complexity: O(visible rows). Long feeds, tables and dropdowns with thousands of items. This is the idea behind react-window and TanStack Virtual.
Render only the rows that are visible, so huge lists stay fast.
Time: O(visible rows). Space: O(visible rows).
Long feeds, tables and dropdowns with thousands of items. This is the idea behind react-window and TanStack Virtual.
No. This converter runs in your browser for ordinary use, so the input is not sent to a backend by this tool.
Keep working without searching again.
A long list can have thousands of rows. Virtualization renders only the rows in view (green) plus a few extra (blue); the rest (grey) are not in the DOM at all.
function getVisibleRange(scrollTop, viewportHeight, itemHeight, total, overscan = 2) {const first = Math.floor(scrollTop / itemHeight);const last = Math.ceil((scrollTop + viewportHeight) / itemHeight);const start = Math.max(0, first - overscan);const end = Math.min(total, last + overscan);return [start, end];}
Tip: use the arrow keys to step and the space bar to play or pause.