Browser extension for exploratory discovery of Internet Archive materials with quality filtering
A Chrome extension that transforms your new tab page into a serendipity engine for digital history. Discover random photographs, audio recordings, videos, books, vintage magazines, historical newspapers, and software from the Internet Archive's vast collections.
- Curated Randomization — Draws from high-quality collections (Prelinger Archives, Library of Congress, Smithsonian, NASA, etc.) to surface meaningful content
- Smart Quality Filtering — Automatically excludes test images, placeholder files, and low-quality uploads
- Duplicate Avoidance — Tracks recently shown items to ensure variety across discoveries
- Language Filtering — Filter content by language (20+ options including English, Spanish, French, German, Japanese, Chinese, Arabic)
- Media Type Filters — Focus on Images, Audio, Video, Texts, Software, Web Archives, Newspapers, or Magazines
- Advanced Search — Narrow by year range, keywords, or specific Archive collections
- Rich Metadata Display — View comprehensive item information mirroring the Archive's item pages
- Favorites with Sync — Save interesting finds across devices via Chrome sync
- Session History — Rolling log of your last 50 discoveries
- Export/Import — Backup and share your favorites as JSON
- Retro Aesthetic — Warm, archival design with sepia tones and typewriter typography
-
Download this repository (Code → Download ZIP) or clone it:
git clone https://github.com/leaton79/archive-roulette.git
-
Open Chrome and navigate to
chrome://extensions/ -
Enable Developer Mode using the toggle in the top-right corner
-
Click "Load unpacked" and select the
archive-roulettefolder -
Open a new tab to start exploring
After pulling new changes or downloading an update:
- Go to
chrome://extensions/ - Find Archive Roulette
- Click the refresh icon (↻)
- Open a new tab in Chrome
- A random item from the Internet Archive appears
- Click Next (↻) to discover another item
- Click View on Archive.org → to see the full item page
Quick Toggles: Click media type buttons to filter by category
Advanced Filters (click ⚙):
- Year range (e.g., 1920–1940)
- Language selection
- Keyword search
- Specific collection IDs
- Click ♡ to save items (syncs across devices)
- Export as JSON for backup
- Import to restore or share collections
When no filters are applied, the extension randomly selects from quality-vetted collections:
| Media Type | Collections |
|---|---|
| Images | Flickr Commons, Brooklyn Museum, NYPL, Smithsonian, NASA, Library of Congress, MoMA, Rijksmuseum |
| Audio | LibriVox, Grateful Dead Archive, etree, Old Time Radio, 78rpm recordings |
| Video | Prelinger Archives, Classic TV, Feature Films, Silent Films, Classic Cartoons |
| Texts | Project Gutenberg, Americana, Biodiversity Heritage Library, Pulp Magazine Archive |
| Software | MS-DOS Games, Apple Software, C64, Internet Arcade, Console Living Room |
Items are automatically excluded if they match patterns indicating:
- Test content (
TESTIMAGES*,testfile*) - Camera auto-names (
IMG_*,DSC*,MVI_*) - Timestamp-only titles
- Very short or hash-like identifiers
- Randomly select from curated collections (or apply user filters)
- Vary sort order (downloads, date, title, rating) for diversity
- Use multiple offset strategies across result sets
- Fetch 100 candidates and apply quality filters
- Exclude recently seen items (last 500)
- Select randomly from remaining candidates
archive-roulette/
├── manifest.json # Chrome extension config (Manifest V3)
├── newtab.html # Page structure
├── newtab.css # Retro-archival styling
├── newtab.js # Application logic, API calls, filtering
├── storage.js # Persistence layer
├── background.js # Service worker
├── icons/ # Extension icons
├── LICENSE # GPL-3.0
└── README.md
Edit CSS custom properties in newtab.css:
:root {
--color-paper: #f4efe4;
--color-ink: #2c2416;
--color-accent: #8b4513;
}Edit CURATED_COLLECTIONS in newtab.js:
CURATED_COLLECTIONS: {
image: ['flickrcommons', 'your_collection', ...],
}Add patterns to EXCLUSION_PATTERNS in newtab.js:
EXCLUSION_PATTERNS: [
/^test/i,
/your_pattern/i,
]This extension uses the Internet Archive's free, open APIs:
- Advanced Search:
https://archive.org/advancedsearch.php - Metadata:
https://archive.org/metadata/{identifier}
No API keys required.
Contributions are welcome! Please feel free to submit issues or pull requests.
- Fork the repository
- Create a feature branch (
git checkout -b feature/improvement) - Commit changes (
git commit -am 'Add feature') - Push to branch (
git push origin feature/improvement) - Open a Pull Request
This project is licensed under the GNU General Public License v3.0. See LICENSE for details.
- Internet Archive — For preserving and providing open access to our digital heritage
- Contributing Institutions — Library of Congress, Smithsonian, NYPL, Brooklyn Museum, NASA, Prelinger Archives, and the many organizations that share their collections openly
Created by Lance Eaton
