Three browser storage mechanisms, each with different lifetimes, scopes, and appropriate uses. Here's when to reach for each. Overview Feature localStorage sessionStorage Cookies Capacity ~5–10 MB ~5 MB ~4 KB Expires Never (until cleared) Tab/session close Set explicitly Sent with requests No No Yes (automatically) Accessible from JS Yes Yes Yes (unless HttpOnly) Scope Domain Tab + domain Domain (configurable) localStorage Stores data with no expiry. Persists until the user clears it or the site clears it. // Write localStorage . setItem ( ' theme ' , ' dark ' ); localStorage . setItem ( ' user ' , JSON . stringify ({ id : 1 , name : ' Alice ' })); // Read const theme = localStorage . getItem ( ' theme ' ); // 'dark' const user = JSON . parse ( localStorage . getItem ( ' user ' )); // Delete localStorage . removeItem ( ' theme ' ); // Clear all localStorage . clear (); // Check existence if ( localStorage .…