← base31.org

what’s new

Every change worth telling you about.

base31 is currently v1.50.0. Smaller fixes ship quietly; this page tracks the releases that changed how the site works.

  1. v1.50.0latest

    A thread of light around the way into the directory

    The hero's Explore the directory button now wears the travelling light of Google's own controls: a hairline comet that runs around its edge, changing speed and stretching as it goes.

    • A thin, masked ring of colour circles the Explore the directory button, sitting on its edge so the label stays clear and readable.
    • The thread is not a spinner: it sweeps in quickly, crawls through the middle of the lap, then accelerates home, and its arc stretches and shortens with that speed.
    • The light is drawn from the directory's own palette — emerald, sky and amber — and holds still for visitors who ask for reduced motion.
  2. v1.49.0

    A lighter page, clearer picks and a rail you can scrub

    Light mode has calmer paper colours and stronger small text, detail pages separate the overview from voting and sharing, the section rail can be held and dragged, the community board checks for messages once a minute, and checked versions are published automatically as GitHub releases.

    • Light mode uses warm paper surfaces, readable captions, quiet shadows and more visible graph threads without changing the dark theme.
    • Every site detail page has section shortcuts, a labelled preview, collection and website facts, a separate voting and sharing column, and a two-column related-picks list. Collection breadcrumbs and return links now open the actual collection page.
    • Hold a section-rail line briefly, then slide up or down to scrub across all sections, including ones outside the rail's visible area. Ordinary taps and keyboard navigation still work.
    • The discussion board polls once a minute while the tab is visible. Manual refresh, returning to the tab and posting still refresh immediately, and incoming messages do not move the conversation while someone is reading.
    • The Auto release workflow publishes the package version with its matching changelog notes after successful main-branch push CI. Existing releases are skipped, stale builds are not tagged, and pull-request runs cannot publish a release.
    • The directory web now sits freely on the background below a spaced divider, with on-canvas node labels, a wander button and a resettable count of picks met.
  3. v1.48.0

    A fire button, and the whole directory drawn as one web

    Any listed site can be fired once a day: a fire is worth ten votes for its next 24 hours and then stops counting on its own, the trending board shows the fires that are running, the website of the week lost its little glyph box, the FAQ answers the useless web, and the landing page ends on a living map of every collection and every pick.

    • Every card and every detail page carries a fire button beside the thumbs. One visitor can fire a site once a day, remembered in their own browser, and a fire is worth ten votes: the one ranking rule the whole site shares counts each fire still running, so a fired site climbs the /explore order, the Top 10 and the /stats list together. Nothing is decremented — the Worker stores the timestamps a fire was cast at and drops the expired ones as it reads them, so a boost runs out by itself exactly 24 hours later.
    • The Top 10 shows the fire as a marker and nothing more: a row that has been fired today carries the emoji next to its name, because the act of firing belongs on the card where the visitor is already looking at one site.
    • The website of the week no longer leads with the small tinted box and its glyph; the heading is the title and the week, and the rule that drew the box went with it.
    • The FAQ now answers where to find the useless web and what the best useless websites are, names The Useless Web and the directory's own fun and random picks, repeats those answers in the FAQPage structured data, spells the same searches out in a block only a screen reader and a crawler read, and tells an assistant what to say in public/llms.txt.
    • The landing page closes its browsing half with the site web: one hub per collection and one thread per pick, drawn from the section registry and the entry list rather than a hand-kept list, so a new config entry appears on the next publish with no edit in the component. Hovering, tapping or tabbing a node lights its whole branch and dims the rest, and every node is a real link.
  4. v1.47.0

    A drawer that answers, and one grey everywhere

    The phone menu can be dismissed by tapping beside it, folds its own lists away, and searches in place instead of sending you to the directory; every page outside the homepage now sits on the same grey; and the directory has no duplicate picks left.

    • Tapping beside the open phone menu closes it. The full-screen overlay wrapped around the panel was taking pointer events of its own and swallowing every tap in the strip next to it; only the panel is interactive now, and that strip is always at least 56px wide.
    • The drawer's two lists each carry their own text control — Close folds a group away, Open brings it back — so a phone's short viewport is not a wall of links.
    • The drawer's search answers inside the drawer. The field is still a plain GET form to /explore, so it works before hydration and still makes a shareable link, but the panel now lists the six strongest matches and links each one to that pick's page.
    • Every page outside the homepage — site details, tags, tools, stats, the section pages — sits on the same grey the landing page's sections do, so a card looks the same on a detail page as it does at home.
    • A phone pass over the whole site: taps no longer wait out double-tap zoom, form fields are the 16px Safari will not zoom for, page heights follow the collapsing URL bar, and the full-bleed band and footer keep clear of a notch held sideways.
    • Six picks were listed twice in Other cool sites under addresses that differed only by a trailing slash, and three more appeared in two collections at once. The duplicates are gone, and content validation now compares those lists by address and fails a URL two of them both claim.
  5. v1.46.1

    A calmer conversation on the landing page

    The community board reads like a chat now: the opening post carries its reply count and last activity, replies sit in one quieter indent behind a folded line, times read as “12m” instead of a parsed date, and new messages wait behind a tap rather than moving the list under the reader.

    • A thread header says what it holds: the replies, when the last one landed, and a green dot on the conversations that moved since your last visit.
    • Messages show relative times — just now, 12m, 3d — with the exact stamp on hover, and replies are drawn one size down from the post they answer.
    • A thread longer than two replies folds the rest behind one line that counts them, so a busy conversation stays skimmable.
    • “Replying to” is a door rather than a label: the quoted line jumps to the message it answers and lights it up, and every message offers Copy link to its own address.
    • The composer got quieter — a hand-drawn heading, a counter that warms as you near the limit, ⌘/Ctrl + Enter to post, and one tinted line of feedback instead of a paragraph of empty space.
    • New messages wait behind a pill above the feed instead of replacing the list mid-read, and the first paint is a skeleton rather than a sentence.
    • The feed counts its conversations, the refresh control turns while it works, and an empty board offers a button that puts the cursor in the box.
  6. v1.46.0

    A weekly pick, and an inbox for reports

    The landing page gains a website of the week, bug and feature reports now land in the site's own moderation inbox instead of an email, the hero prints two figures rather than three, and the Top 10 has a podium.

    • The landing page carries a website of the week between the Top 10 and the submission form: the current pick with its tagline and its story, and a link to the archive. It reads the same newest-first list /websites-of-the-week does, so the two can never name a different week.
    • Bug reports and feature ideas go to the admin panel. The form files them with the Worker, they are listed in the moderation inbox beside the URL suggestions, and nothing is emailed — so a mail-provider outage cannot lose a report.
    • Submit a URL now wears the same shape as Surprise me: the same corners, height, padding and round glyph, so the two hero actions read as one pair. Only the fills differ.
    • The Explore the directory button drops its site count. The picks it leads to are still counted; the "19 sites" prefix is gone.
    • The hero prints two figures instead of three. The estimated lines of code, its GitHub fetch and its cache are removed rather than shown from a stale estimate.
    • The Top 10 has a podium: the first three numerals carry gold, silver and bronze, drawn from the accents the page already uses, and the remaining rows keep their neutral outline.
    • Deslove joined the design picks — a free community where designers share portfolios, projects and thoughts.
  7. v1.45.0

    Every section gets its own page

    Each collection on /explore now has a page of its own with its own search and filters, a search answers with the best matches first and hides the sections that found nothing, and the subsite paths wear one shared grey band.

    • Every collection has a page of its own at /explore/<section> — the whole list, its own search field, its own filter chips and the same vote ranking — and each strip on /explore now hands over the way there.
    • A search answers with the best matches first: the strongest results from every collection, ranked by name before tag before description, in one block above the lists.
    • Only the sections that actually hold a match are rendered while searching. An empty section is gone entirely, heading and closed note included, instead of five "nothing here" lines.
    • Subsite paths finally look like paths. base31.org / Tags / discovery is a rounded grey band with one chip per step, on every page that carries a breadcrumb.
    • No-code AI tools joined the section keys, and the keys now run the full width of the page — three across on a desktop instead of a narrow column.
    • The editor's picks left /explore: they are the landing page's carousel now, and only the landing page's.
    • The landing page's prose reordered: Support sits directly under About the directory, and the launch countdown closes the page below the FAQ.
    • Share buttons are gone from the related-pick boxes on a site page. The share block stays where it belongs — on the page itself.
    • Scroll position is now restored on back and forward navigation, not only on a fresh page load.
  8. v1.44.0

    Submit a URL from the homepage

    The landing page carries the URL request form above its tag shelf and the hero's Submit a URL button anchors to it, and the submission box no longer claims a private review queue.

    • The URL request form now sits on the landing page too, between the Top 10 and the tag shelf. Both copies post to the same Worker route, so a find can be passed on without opening /explore first.
    • The hero's Submit a URL button anchors to the copy on whatever page the visitor is reading, instead of always sending them to /explore.
    • The line “Private review queue. Never auto-published.” is gone from the submission box, along with the style rule that only that line used.
    • The landing page's section rail names the form as its own step, between Top 10 and Tags.
  9. v1.43.0

    The homepage gets its lists back

    The landing page now opens on its keys into the directory, the editor's picks, a streaming-style Top 10 and a tag shelf, the confirm-to-close warning is gone, and the Explore control is centred.

    • The landing page leads with nine keys into the directory — editor's picks, the featured sites, each of the four off-directory strips, tags, recently added and the quality report — and every one is a link into that section on /explore, where the lists themselves still live.
    • The editor's-picks carousel is back on the homepage below those keys, so the editorial shortlist is met without opening a menu.
    • A new Top 10 trending today board follows it, dressed the way a streaming service dresses one: a flame on the heading and a big outlined rank numeral down the side of each row.
    • The Top 10 is ranked from the same shared vote totals /stats and every card use — real community counts, not page views. An entry nobody has voted on reads “no votes yet”, an all-zero board says so instead of inventing an order, and the caption under the heading states plainly what the numbers are.
    • “Browse by tag” puts the 18 most-used tags on the homepage, each linking to its own tag page.
    • The browser's “unsaved changes will be discarded” confirmation — raised once a visitor had clicked or scrolled — is removed. The screen wake lock and the 30-day scroll resume stay.
    • “Explore the directory” is centred on the hero instead of sitting against the left edge.
    • Three new picks: Puzzlify, a photo-to-jigsaw puzzle maker; the SteamVaults Steam Market Fee Calculator; and Igyeon, a Korean-language discussion site of source-linked arguments.
  10. v1.42.0

    The directory moves to /explore, behind a phone menu

    Every list of sites now lives on its own /explore page, the landing page keeps the hero and the prose, and phones get a navigation drawer holding a search box and the category list.

    • Sites, editor's picks, the four off-directory strips and the URL request form moved off the homepage and onto a new /explore page, which carries the search field, the tag filters and the sort controls.
    • The landing page is now the hero, the about section, the community board, the support hub, the launch clock, the FAQ and the signup — with a full-width “Explore the directory” control where the search field used to sit.
    • On a phone a new nav button in the header slides a drawer in from the right: a search box that lands on /explore?q=…, an “Explore:” list linking each section of the directory, and a shorter list of the site's other pages.
    • The header links Explore at every width, so the directory is one tap away on desktop too, and /explore joins the sitemap.
  11. v1.41.0

    Clearer section breaks and a stronger hero action

    The four off-directory strips are separated by the page's divider, the hero's two actions share one row on phones, and Submit a URL is now a solid primary button.

    • The four off-directory strips — Other cool sites, Cool APIs, Cool apps and Cool AIs — are now marked off with the same fading divider the rest of the homepage uses.
    • On a phone, Surprise me and Submit a URL sit side by side in one row instead of stacking into two full-width rows.
    • Submit a URL is a solid filled button with a small plus glyph and a plain label, so it reads as the hero's primary action rather than a tinted pill.
  12. v1.40.0

    A quieter footer and a support section that stays closed

    The footer now carries an explicit 2026 copyright, the support hub stays collapsed until opened, the signup block takes less room on phones, and the about section is trimmed to its prose and links.

    • A copyright line, Copyright © 2026 base31.org, now sits in the footer beside the contact details and the version number.
    • Support starts closed, so the page no longer leads with reviews, ads and donation appeals; its heading still opens and closes the hub.
    • The email signup block is smaller on phones — tighter padding, a smaller heading and less space between the form and the optional browser-alert and bug-report extras.
    • The four topic tags and the sparkle-gif credit under “about the directory” are gone, leaving the prose and the About Us / Our Story cards.
  13. v1.39.0

    A weekly blog agent, and a moderation page that signs out cleanly

    A free GitHub Actions workflow now writes one blog post every Monday with an AI model, and the moderation page clears its numbers the moment the admin signs out.

    • A new weekly-blog.yml workflow runs every Monday, asks a free Cloudflare Workers AI model for a post about the open web, checks it against the same rules as the content validator, and commits it to config/blogs.json.
    • The moderation page gains a Sign out control: signing out, or a rejected password, clears the inbox and hides every count so the last admin's numbers are never left on screen while signed out.
  14. v1.38.0

    Avatars for the discussion, and a playable pick

    Every community discussion message now draws a deterministic avatar from its display name, and Runboli — a personal site you play inside Halo 3 — joins Other Cool Sites.

    • Community discussion messages show a stable DiceBear avatar derived from the display name, so the same person looks the same without an account or an uploaded image.
    • Runboli, Runbo Li's personal website rebuilt as a playable Halo 3 campaign, joins Other Cool Sites and appears in the recently-added index.
  15. v1.37.0

    Tags, recently added, and an honest quality report

    Every tag becomes its own page on tags.base31.org, the newest picks get a derived recently-added index, and each site gains related picks and a share strip. A new quality report publishes the editorial review dates beside the automated health checks.

    • Detail pages link their tags into /tags/<tag>, list six related picks ranked by shared tags, and carry a share strip with X, Facebook, LinkedIn, Reddit, email and a copy-link button.
    • A new /recently-added page groups every dated entry by month, newest first, straight from the addedAt and createdAt metadata, and lists community uploads read live from the Worker.
    • The tag index at /tags gathers all 230 tags in letter groups with per-tag counts; tags.base31.org serves the same routes on a subdomain, so a tag has a short shareable address.
    • A new /quality-report page publishes each curated pick's added and last-reviewed dates with fresh, due and overdue states, plus a live table of automated health checks behind a new public Worker /quality endpoint.
    • Quick jumps and the footer link the three new indexes, and every tag page joins the sitemap.
  16. v1.36.0

    More votes, fewer distractions, a reliable daily word

    SpriteFrame moves to Other Cool Sites, every collection ranks by total votes, and search clears away the editorial browsing blocks. Word of the Day becomes a reliable, self-contained vocabulary notebook.

    • SpriteFrame is now in Other Cool Sites instead of Cool Apps, retaining its URL-based vote identity.
    • Default rankings use total votes from most to least, counting upvotes and downvotes; ties use upvotes and then name. Stats follows the same rule, and pins do not override vote ranking.
    • Editor’s Picks and section quick links disappear while searching and return when the query is cleared. Submit a URL gets a distinct plus badge and refined hover styling.
    • Word of the Day immediately displays a curated entry selected by UTC date, without waiting for third-party APIs or styling services. Its 30-word collection rotates daily and repeats monthly.
    • The word notebook includes past-day browsing, random discovery, local saved words, pronunciation where supported, PNG card downloads, and a restartable five-question quiz.
  17. v1.35.0

    Our story, clearer numbers, more ways to help

    About Us and Our Story get direct internal links, the stats page regains its missing styles, and SupportKori joins the referral and donation options. The submission desk and discussion board get a more defined layout.

    • Added /our-story with links from About and the homepage, alongside clearly labeled About Us navigation.
    • Restored stats cards, responsive charts, rankings and empty states after the route-specific stylesheet rules had been lost.
    • The URL suggestion form stays directly below the final directory collection and gains a framed writing area. Conversations have a distinct feed and a sticky desktop composer.
    • Newsletter success has a clear confirmation state after the Worker acknowledges storage; active emails remain visible in the existing private admin inbox.
    • Added the supplied SupportKori referral link and a second donation option on the homepage and donation site, preserving FundRazr.
  18. v1.34.0

    Pass on a good find

    SpriteFrame joins the apps collection, URL suggestions get a dedicated place below the directory, and conversations get a cleaner shared space. Email signup now saves immediately, with a private subscriber panel for the operator.

    • SpriteFrame combines PNG frames into sprite sheets with animation previews and JSON timing exports.
    • A styled URL suggestion form follows the last directory collection, with a Submit a URL shortcut beside Surprise me. Suggestions go to the operator for review.
    • Community conversations gain framed message cards, clearer reply threads and a refined composer in both themes and on phones.
    • Footer buttons link directly to base31 posts on dev.to and Medium.
    • Email signups report success after storage without confirmation. The existing private community inbox lists subscriber emails as active immediately. The Worker must be deployed separately; existing admin credentials are unchanged.
  19. v1.33.0

    Websites of the Week and better blog discovery

    The blog now has more useful search-focused guides and a weekly editorial page for sharing one interesting website with its story.

    • Added three substantial articles about personal websites, the Indie Web, and building sites people bookmark.
    • Added /websites-of-the-week, powered by config/websites-of-the-week.json so new picks can be added without changing the page code.
    • Added the first weekly pick, Low-tech Magazine, with an editorial explanation of why it is worth visiting.
    • Added a prominent Websites of the Week button near the top of the blog and included the new page in the sitemap and structured data.
  20. v1.32.0

    A private inbox for community suggestions

    Visitors can now request URLs for the directory, while the protected admin inbox shows those requests, newsletter addresses, and published community sites in one place.

    • Added a bottom-of-page URL request form; suggestions wait for manual review and are never published automatically.
    • Added newsletter subscriber visibility to the moderation panel, including confirmation state.
    • Added a Vercel server-side password gate so the admin password is not exposed directly to the Worker from the browser.
    • Added an Admin link to the footer.
  21. v1.31.0

    Safer community publishing and healthier previews

    Community uploads now have a per-visitor submission limit, protected removal tools, automatic health checks, and a moderation panel. Screenshot previews also use responsive image optimization and legacy typo-prone subdomains have safe aliases.

    • Community submissions are limited to three per hour per privacy-preserving visitor fingerprint, with a Retry-After response when the limit is reached.
    • The protected /admin/community-sites panel lists community uploads, their health state and failed checks, and can remove their hosted KV files using COUNTER_SECRET.
    • The Worker checks published uploads every 15 minutes and hides a site after two failed checks while retaining it for moderation.
    • Homepage and detail-page screenshot previews use next/image with fixed remote hosts, and corrected dailywordle, jokegenerator and voicetranscribe subdomains redirect to the existing live destinations.
  22. v1.30.0

    Focus guide and patched framework dependencies

    The new Focus listing now has its own favicon and directory guide, while Next.js and its ESLint integration move to the latest patched 14.2 releases.

    • Focus now passes content validation with a local favicon and a full /tools/focus guide.
    • Next.js and eslint-config-next are upgraded from 14.2.15 to 14.2.35 to address published security advisories without taking a major-version migration.
    • The project's CI checks now cover the newly published entry instead of failing on the first push after it was added.
  23. v1.29.0

    A background remover, and a tidier homepage

    A new browser-only tool clears the background from a photo, swaps in a colour or gradient and exports a transparent PNG. The homepage search centres on desktop, the editor's picks get a smoother slide, and the community board fits phones properly.

    • Background Remover is a new base31 tool: drop in an image, clear the backdrop in one click, refine it with a tolerance slider and click-to-erase, then download a transparent PNG, WebP or JPEG — nothing is uploaded.
    • The hero search now centres on desktop instead of hugging the left of the column, matching the stats and tag chips around it.
    • Editor's picks slides animate in from the direction you moved, with a progress mark that fills as a rotating slide waits, and a warmer lit panel in both themes.
    • The community discussion board gains tighter phone spacing, full-width post and pagination buttons, and inputs sized so mobile browsers do not zoom when a field is focused. The 'community corner' label is gone.
  24. v1.28.0

    A community corner for the curious web

    A public discussion board sits directly below About the directory, with display names, shared conversations and threaded replies. The existing Cloudflare Worker gains consistent SQLite-backed discussion storage, deployed separately from the frontend.

    • Visitors can start conversations and reply to any message without an account. The board refreshes every 15 seconds while the tab is visible and offers older/newer conversation pages.
    • Plain-text messages, bounded request sizes, name and message limits, atomic network rate limits and secret-protected moderator removal provide a safer foundation for public discussion.
    • The community corner follows both themes and mobile layouts, keeps drafts on failed sends, and documents public-message privacy and the separate Worker deployment requirement.
  25. v1.27.0

    Color on the cards, a clearer next step

    Featured tags now sit along the bottom of each preview in consistent mint, sky, amber and coral colors. Details follows the rating buttons, and coordinated accents bring a little more color to the homepage in both themes.

    • Featured cards put rating controls first and the Details link on a separate row below, with interactive controls kept outside the outbound link.
    • Tags overlay the bottom of the preview image, wrapping on small screens. Semantic tag families share colors and other tags use a stable fallback; labels remain readable without relying on color alone.
    • Sky, amber and coral join emerald in the hero figures, editor's picks, search suggestions and quick-jump accents, with separate light and dark theme values.
  26. v1.26.0

    A quieter shortlist and a fresh way to support

    Search keeps four example tags without the extra hint. Editor's picks loses its label and button clutter, fits phones more comfortably, and the donation page becomes a clean, playful space with direct FundRazr support links.

    • Two example tag chips and the or type #tag hint have been removed; exact tag search continues to work across all collections.
    • Editor's picks no longer shows the shortlist label, pause button, arrows or clickable slide dots. Rotation pauses on hover and stops after interaction; arrow-key and swipe browsing remain available with reduced-motion support.
    • Mobile picks use stacked copy and a full-width exploration link, without the oversized decorative number.
    • The donation page uses fine borders, generous spacing, monochrome surfaces and small playful accents in both system themes. Support links lead to the FundRazr campaign, replacing email payment links and placeholder crypto wallets.
  27. v1.25.0

    An editor's shortlist and a clearer directory

    A configurable rotating shortlist sits below search, exact tag queries work across every collection, featured cards get a clearer editorial layout, and the code-size figure now estimates repository lines from GitHub's public API. Maintenance documentation has been rewritten around the actual app.

    • Editor's picks references any curated detail slug in config/editors-picks.json. Rotation pauses on hover or focus, offers an explicit pause control and respects reduced motion.
    • Search supports #tag and tag:value queries, multiple words and cross-collection tag suggestions. Surprise me now respects matching results from all collections.
    • Featured cards use left-aligned titles, visible destination hosts, larger descriptions and a single footer for details and voting; pins remain separate from outbound links.
    • Estimated lines of code uses GitHub language byte counts with documented per-language assumptions and a 24-hour browser cache. It needs no key and keeps cached data or a dash when unavailable.
    • The page scrollbar is visually hidden without disabling scrolling; high-contrast users retain the browser scrollbar. README now documents setup, keys, config editing, maintenance and operational limitations.
  28. v1.24.0

    AI picks, community votes and a page for every site

    Cool AIs joins the directory with 15 browser AI tools. Search reaches all five collections, external picks gain shared voting and freshness labels, and every curated entry has an SEO-ready detail page. The homepage hero keeps three figures; unique visitors remain in the stats experience.

    • Cool AIs includes ChatGPT, Gemini, Claude, Copilot, Perplexity and other assistant, research and creative tools. The section supports the same search, categories and disclosure controls as the other strips, in all four homepage languages.
    • Search now clears conflicting category filters, opens sections and shows all matching cards rather than hiding results behind the nine-card preview. Category names and web addresses are searchable too.
    • All external strips share the existing Worker's voting service. Stable URL keys keep votes consistent between cards and detail pages; failed submissions show a retry message instead of claiming success.
    • Added dates and review timestamps power Recently added, Fresh and Review due badges. Entries without recorded review dates explicitly say Not yet reviewed. AI entries carry their real addition date; browser apps use their recorded release date.
    • Every curated listing has a static /sites/<slug> detail page with canonical metadata, social previews, breadcrumbs, structured data, related picks, review dates and voting. The sitemap includes them and existing tool guides remain linked.
    • The homepage hero no longer displays unique visitors. Unique visitor tracking and the stats page are unchanged.
  29. v1.23.0

    A soft edge on the grey band, headings in the house hand, and the cards that went missing

    The grey field now fades into and out of the page instead of starting on a hard line, every collapsible section heading wears the site's own handwriting, and a reveal bug that left blank gaps in the directory is fixed — cards that mounted after a sort, a "Show all" or the vote totals arriving no longer stay hidden.

    • The grey band has no hard edges now. Its top is a gradient: it starts on the page background and eases into the grey over the band's first 88px of padding, so the hero hands off to the band instead of the page ending on a line under the search field. Its bottom eases the other way, into the tint the footer opens on, so the band meets the footer with no seam there either.
    • The headings that open the collapsible sections — Featured sites, Other cool sites, Cool APIs, Cool apps, Support, About and the FAQ — now wear the same face as the wordmark, the headline and the quick-jump labels that point at them: the site's own handwriting, a touch larger so it reads at heading size.
    • A bug that left blank gaps in the Featured sites list is fixed. The fade-in observer only re-ran when the list changed length, so a card that mounted for another reason — clicking "Show all", choosing a new sort, or the vote totals arriving and pulling a different card into the first screenful — kept the hidden state it shipped with and left a hole in the grid. The reveal now follows which cards are actually shown, so every card fades in when it appears.
  30. v1.22.0

    A grey field below the hero, and a third strip of browser apps

    Below the hero's search bar the whole page now sits on a solid grey field that runs down to the footer, and a third strip — Cool apps — joins the two under the directory: 37 browser apps worth a tab, filed by category, edited through config/cool-apps.json like the other two lists.

    • The page turns grey under the search bar and stays grey all the way down to the footer. The band is full-bleed: it breaks out of the centered column to touch both edges of the window, then brings its content back to the same measure, so the cards inside stay lined up with the header and the hero while the ground changes behind them. The hero itself keeps the page's own dark background, so the grey reads as a horizon line under the search.
    • A third strip, "Cool apps", sits directly under "Cool APIs". It holds 37 browser apps worth a tab — Excalidraw, Photopea, Squoosh, CodePen, CyberChef, Radio Garden and more — and it is built from the same shared strip as the other two: it folds away under its heading, counts what a search found, filters by category and opens every card in a new tab. The list is edited through config/cool-apps.json alone, and the validator now checks it the same way it checks the other two.
    • The hero's quick jumps are four keys now, with Cool apps added to the row; they lay out two-by-two on the same 480px measure as the search field, and still stack into compact rows on a phone.
    • The 37 apps are filed under nine categories — Draw & design, Images, Developer, Documents, Productivity, Writing, Math & science, Media & sound and Utilities — so the chip row cuts the list without typing, and the hero search reaches every one of them.
    • The directory's empty state now points at all three strips: when a search matches nothing in the featured list but does match a cool site, API or app, it says so and counts them together.
  31. v1.21.0

    Nine cards a section, a rail in the background, and keys that press

    Every long list on the page — the directory and both strips under it — now shows its first nine cards and ends on one line that opens the rest, so a section lands as a screenful you can take in. The hero's three quick jumps became raised keys set in the headline's own handwriting, the section rail lost its floating pill and now sits directly on the background, and four new posts join the blog.

    • Each section stops at nine cards and ends on a single quiet line: "Show all 63 links", with the number being held back beside it. Nine fills the three-column grid exactly, so a cut list makes whole rows instead of leaving one card stranded; the line folds the list back down when it is pressed, and a new search or another chip starts a short list again.
    • The three quick jumps under the hero search are raised keys rather than outlined boxes. Each carries a lit green hairline along its top, a shallow gradient falling to a darker floor, an inner highlight and a shadow beneath it, and a glow in the corner that lights up under the pointer — so they read as something you could press, three pixels closer to you.
    • Their labels are set in the same handwriting as the headline now, at 16px instead of 11.5px. That face belongs to the hero and nowhere else on the page, which is what gives the strip a voice of its own instead of blending into the body text under it.
    • The section rail is part of the page surface instead of a panel lying on top of it. The fill, the rounded edge, the blur, the shadow and the scrollbar are all gone; the bars sit straight on the background in the gutter, and the one thing the rail still draws is the label that opens for the section you are in, which travels with a faint wash of the page colour so it stays readable wherever it reaches.
    • Four new posts on the blog, all of them about the same small web the directory keeps pointing at: how a one-person site actually gets found, why browser games are quietly thriving, why plain text outlives the software that made it, and how to make a site feel fast without rewriting it. Seventeen posts now, and the sitemap picks each one up as it ships.
  32. v1.20.0

    People counted per day, chips on both strips, and a quieter page

    The counter now keeps a unique-visitor count for each day as well as the all-time one, so /stats draws a second graph — people rather than page loads — and the hero prints its own unique figure beside the views. "Other cool sites" gets the same category chips "Cool APIs" already had, the featured cards stop printing their host, and two floating pieces are gone: the corner views pill and the bottom-left shortcut to the next section.

    • The worker keeps a second daily record now: one bucket per day holding how many different people were seen, next to the existing one counting loads. The stats page draws it as a second graph with its own heading, and adds two cards — unique visitors today, and unique visitors over the last seven days — so a single visitor who reads twenty pages stops looking like twenty people.
    • The hero's counter request carries the unique total back with the view count, so the four figures above the hero search are views, unique visitors, websites linked and lines of code. They sit above the one button now instead of under it, and that button is red.
    • Both strips are filterable: the 52 links in "Other cool sites" are filed under seven categories — Toys, Design & code, Knowledge, Games, Art & calm, Places and Sounds — and the strip carries the same chip row, in the same material, as "Cool APIs". The chips narrow the cards alongside the hero search rather than replacing it.
    • Two floating pieces are gone. The "views" pill in the bottom-right corner and the bottom-left pill that jumped from the directory to the strip below it are both removed, so nothing sits over the page's own content any more; the same numbers live in the hero, where the reading starts.
    • Directory cards no longer print the host underneath the name. The favicon and the ↗ marker stay, and the card's name plus its screenshot already say where it goes.
  33. v1.19.0

    Unique visitors, dotted dividers, and a second ad slot

    The counter now reports unique visitors as well as views — a person is counted once, not once per reload — and /stats shows the new number. The support hub gets a dotted rule between its blocks and a second consent-gated ad slot, and the directory's cards are a little smaller with a preview band the screenshot fits exactly.

    • The worker counts unique visitors alongside views. A visitor is reduced to a one-way SHA-256 hash of the connection's address and the browser's User-Agent — neither is stored — and that hash is kept as a mark for 400 days; the total only moves the first time a visitor is seen, so reloads and second tabs do not count twice. The new number sits on /stats next to the total views, and the privacy page explains exactly what is hashed and what is not.
    • The support hub's blocks — the reviews, the donation board, the referrals and the ad slots — are separated by a dotted rule now, so each one reads as its own thing without a hard border.
    • A second ad slot joins the 160x300 banner, from the profitable-rate CPM network. It follows the same rule as everything else in that hub: the container is in the page, the loader is appended only after the cookie notice is accepted, and withdrawing the answer takes the script out and clears the frame it built.
    • Directory cards are a little smaller: the preview band is shorter, and both screenshot services are now asked for a 640x300 shot — the band's own ratio — so the picture fills it instead of being cropped.
  34. v1.18.0

    Category chips, numbers on the page, and a way out of the directory

    The Cool APIs strip gains category chips that narrow it alongside the hero search, the three hero figures drop their tray and sit straight on the page in the display face, and a small pill in the bottom-left corner jumps from the directory to the strip below it.

    • Every API in the Cool APIs strip is now filed under one of eleven categories, and the strip carries a chip row — the same control the directory uses for tags — so the list can be cut from sixty-three cards down to a handful without typing. The chips combine with the hero search instead of replacing it, and the count says how many of the links are showing.
    • The three figures above the hero search are out of their tray: no border, no background, just the numbers on the page in the display face, each counting up more slowly than before. The lines-of-code figure is the real figure now, 51,871.
    • A small pill in the bottom-left corner shows while "Featured sites" is the section you are reading. It jumps straight to "Other cool sites" and slips away once you are past the directory.
  35. v1.17.0

    Numbers that count, a rail that scrolls, a quieter review box

    Three figures above the hero search count up from zero — the directory's visitors, the sites it links out to, and a project size reading 50,000+ lines of code. The section rail now renders every section and scrolls to the ones further down, and the Trustpilot card drops its own five-star row so the hosted review widget is the only rating surface.

    • Three numbers now sit directly above the hero search and count up from zero when the page loads: how many people have read the directory (the live view counter), how many websites it links out to (the directory entries plus the off-directory picks), and the size of the project — a little over fifty thousand lines of code, so the figure reads "50,000+". Visitors who asked for reduced motion get the final value immediately.
    • The section rail renders every section now, and it scrolls. The wheel and a drag inside the pill reach the sections further down the list, the line for the section you are reading is kept scrolled into view as you read, and a click or the arrow keys still jump straight there.
    • The Trustpilot card no longer draws its own five-star row and score above the collector. The hosted TrustBox is the only rating surface, so the card reads as an invitation instead of a scoreboard that has to load before the widget it describes.
  36. v1.16.0

    CompMails, rebuilt

    CompMails becomes a real temp-mail tool: an instant inbox, live refresh that pauses in a background tab, search with an unread filter, a reader with raw headers and attachment downloads, .eml export, a custom address and a list of the inboxes this browser has used — with the search-facing title and description it was missing, an app icon of its own, and the Adsterra banner the support hub runs, gated by the page's cookie notice.

    • CompMails is rebuilt from scratch. An inbox is created the moment the page opens; the list refreshes itself and pauses while the tab is in the background; search and an unread filter cut a busy address down to what you have not read; and the reader renders HTML in a sandboxed frame with the raw headers, attachment downloads, .eml export and a JSON copy one click away. A custom address with your own name and password, a QR code for a phone, and a short list of the inboxes this browser has used all come with it.
    • It is faster to load, too: the Tailwind CDN, the icon CDN and the Google Fonts request are gone. The page is one stylesheet, one script and system fonts, so a first visit costs a handful of requests instead of a dozen.
    • The page now says what people search for. The title reads "100% free and fast temp mails", the description leads with "Create free temp mail no sign up, fast, guaranteed", and behind it sit a canonical URL, Open Graph and Twitter cards, and a WebSite / WebApplication / FAQPage graph — plus the subdomain's own robots.txt and sitemap.xml, which it never had before.
    • CompMails has an app icon: an emerald tile with a dark envelope, shipped as an SVG, as 48, 96, 192 and 512 pixel PNGs and as an opaque Apple touch icon, wired through a web manifest — so the tab, the home screen and the search result all carry the same mark. The card it shows in the directory was redrawn to match.
    • The 160x300 Adsterra banner the support hub already runs now fills a slot on CompMails as well, and it follows the site's one rule: the loader is only appended after the visitor accepts the cookie notice, and withdrawing that answer removes the script and the frame it built. The CompMails guide under /tools is rewritten so the subdomain and the directory page stop chasing the same query, and the privacy page names both ad networks instead of only one.
  37. v1.15.0

    A headline that arrives, and a lighter light mode

    The hero headline rises word by word on load and its negation — the "Not" — wears a marker highlight under a green rule. The light theme gets a real pass on its shadows, hairlines and green, the footer's links finally look like links, the directory's cards are a little smaller with thumbs that are easier to hit, and "Surprise me" is a solid square instead of an outline pill.

    • The headline arrives instead of appearing: each word fades up from below, a little out of focus, with a short stagger between them. The negation in the middle — "Not" — wears a green underline under a marker highlight, and because the accent follows the word rather than the language, "nada" and "pas" get the same treatment on the translated homepages.
    • Light mode got a pass rather than a token swap: a deeper green for the small accents so they clear AA on white, stronger hairlines so card edges and the header rule do not vanish into paper, and a lighter shadow, with light-theme weights for the view counter, the support board and the favicon tiles.
    • The footer's links are links: one blue with a real underline that thickens under the pointer. The contact details and the language switcher take the same blue but keep their pill shape.
    • The directory's cards are a little smaller — a 150px preview band and one size down on the name — and the thumbs in the card's foot are 32px tall, 38px under a thumb, instead of 26px.
    • "Surprise me" is a solid square now: the accent green as a fill, the label in whichever ink stays legible on it. Two new sites join the directory: an 800m runner's results page and a student developer's portfolio, each with its own guide under /tools.
  38. v1.14.0

    A shorter rail, a footer that sinks, a line that loads

    The section rail is down to three lines that travel with you, the footer closes on a grey-to-black gradient, and the green line across the top now animates as a loading bar whenever you follow a link inside the site. Three quick-jump boxes sit under the hero search, the support hub starts at the same left edge as the rest of the page, and Umami joins the analytics in the head.

    • The section rail shows three lines instead of eight: the section you are reading and the two beside it, so the column in the gutter stays a small pill and the lines travel along as you read down the page. Clicking a line, scrolling on it and the arrow keys still walk the whole page.
    • The green rule across the top of every page doubles as the loading indicator. Follow a link that stays on base31.org — "What's new", the blog, the footer — and the solid line dims while a brighter bar grows out of the left edge, then completes, fades and leaves the solid line behind. Nothing is gated behind it and it never blocks a click.
    • Three quick-jump boxes sit under the hero search: Featured sites, Other cool sites and Cool APIs, each an in-page anchor with the list's length as its caption, so the directory is one tap away without typing or scrolling.
    • The footer closes on a gradient now — grey where it meets the page, deepening to black at the very bottom edge — and the light theme gets the same shape in its own greys.
    • The support hub was the one section centered inside the desktop column; it now starts at the same left edge as every other section, keeping its 720px measure. One tag chip is gone from the filter row, and Umami joins the Google tag in the head as a second, cookieless page counter that runs on every visit.
  39. v1.13.0

    A banner in Support, a buzz in the nav

    The support hub carries a 160x300 banner that waits for the cookie answer like every other ad on the site. The section rail and the header's nav links now buzz through the Vibration API as you move between sections, and the hero's "Why base31?" shortcut is gone.

    • A 160x300 banner sits under the sponsored support button, with a fixed-size slot so the section never reflows while the network decides whether to fill it.
    • It is a real ad script, so it follows the site's one rule: nothing is fetched from the ad network until you answer the cookie notice, and withdrawing that answer removes the script and the frame it built. Before the answer the slot points at the privacy page instead of sitting empty.
    • Every step on the section rail buzzes once through the Vibration API — a click, a wheel notch or an arrow key — and the header's nav links do the same on the way out.
    • The hero keeps one call to action. The "Why base31?" link is gone: the rail already steps to About, so it only duplicated what was a click away.
  40. v1.12.0

    Cool APIs, two new typefaces

    A second foldable strip sits under the directory — free public APIs worth building with, kept in its own config file and searched by the same hero search. The site also got a voice: card names wear Titan One and the header text wears Gochi Hand, both self-hosted from Google Fonts.

    • "Cool APIs" joins "Other cool sites" under the directory: a foldable grid of free public APIs, each with a host and one line of why it is worth calling, edited entirely through the new config/cool-apis.json.
    • The hero search now narrows both strips, not just the directory. A query that matches an API opens that strip, filters its cards, changes its count to n of the total, and the directory's empty state names the off-directory picks instead of dead-ending.
    • The names on the cards wear Titan One, a chunky display face that still reads as a label at card size, and the header text — the wordmark and the homepage headline — wears Gochi Hand.
    • Both faces are downloaded and self-hosted at build time by next/font, so no page ever asks fonts.googleapis.com for a font and nothing renders differently while one loads.
  41. v1.11.0

    The section rail is always there

    The column of lines down the right edge no longer waits for a wide window or for a scroll before it shows up: it is on the first screen at every width, full size on a desktop and a slim strip of bars where the gutter tightens.

    • The rail shows from the moment the page opens. It used to be hidden below 1180px and stay invisible until you had scrolled 220px, which is why it looked missing on a laptop window that was a little narrow or before the first scroll.
    • Where it does not fit at full size it degrades instead of disappearing: under 1180px the bars shorten and the labels go (there is no hover to open them on a touch screen), and on a phone it is a slim strip of bars in the same gutter.
    • It still marks the section you are reading — the current line stands on end and turns green with its label sliding out — and a click, a scroll on the rail itself, or the arrow keys steps to another section.
  42. v1.10.0

    Solid cards, a rail down the side, and one search for the whole page

    The directory's cards read as physical objects, a column of lines down the right edge tracks and jumps between sections, the hero search reaches the off-directory strip as well, and the Google tag runs on every visit.

    • Cards are solid: an opaque fill, a real edge, a bottom-weighted shadow and an inner highlight, so each one looks like something sitting on the page with thickness rather than an outline drawn on it. Only the edge and the shadow react on hover.
    • A rail of small lines down the right edge shows where you are — the line for the current section stands on end and turns green, with its label sliding out beside it — and a click, a scroll on the rail itself, or the arrow keys steps to another section. It stays out of the way on phones.
    • The hero search also searches the “Other cool sites” strip: matching picks are filtered in place, the strip opens itself, its count reads n of the total, and the directory's empty state names how many off-directory picks matched.
    • The Google tag runs on every page and every visit, whichever way the cookie banner is answered, because Google verifies the property from the tag it is served; Microsoft Clarity and the ad network still wait for the answer.
    • Community uploads can be mirrored into the repository: set GITHUB_TOKEN as a Worker secret and each published site is committed under public/sites/<slug>/.
  43. v1.9.0

    The Google tag is in the page, and the banner still runs it

    Google Analytics is installed the way Google asks — the tag is served in the head of every page — with Consent Mode defaults that keep it from storing anything until the cookie banner is answered.

    • The Google tag (gtag.js) is now served in the head of every page, with the corrected measurement ID G-W6J79P13FT, instead of being appended after someone pressed Confirm — which is why the tag was never in the HTML Google looks at and analytics stayed empty.
    • It runs with Google Consent Mode: all four storage types start denied, so the tag is installed and verifiable while no cookie is written and nothing that identifies a visitor is stored until they answer the banner.
    • Confirming switches analytics storage (and the ad storage types) to granted; denying or withdrawing switches them back to denied and clears the _ga* cookies an earlier visit left behind.
    • Microsoft Clarity is still inserted only on accept, the Adcash auto-tag is unchanged, and the privacy policy now describes the consent-mode behaviour.
  44. v1.8.0

    A one-line headline, a wider vote bar, and a checked stamp

    The hero heading is three words across the top, the two thumbs now split the foot of every card, votes visibly travel upward, and maintained entries carry a checked badge.

    • The header headline is one line of three words — “Totally Not Boring Websites” — instead of three stacked lines, sized to stay on a single line, and translated on /es, /fr and /pt.
    • Both vote buttons sit side by side and each takes exactly half the bottom of the card: one short, wide bar instead of two stacked chips, so the whole width of the foot is a target.
    • A vote now scrolls upward: the +1 (or -1) rises out of the thumb it came from and fades before it reaches the row above, and it replays on every click.
    • Some entries carry a “checked” badge — the date they were last verified is set per site in config/sites.json and validated by the content check.
    • “Surprise me” draws from the “Other cool sites” strip as well as the directory, so an off-directory pick is always in the mix.
  45. v1.7.0

    A foldable off-directory strip, and the language row moves to the footer

    The hand-picked external picks can be folded away like the directory, the about section has its own sparkle, and the bottom of the page carries the language switcher on a tint of its own.

    • “Other cool sites” opens and closes exactly like Featured sites and Support: the same wobble, the same haptic tick, and a line of text that says so while it is shut.
    • The strip follows the language you are reading — its heading, lede, link count and closed-state note are translated on /es, /fr and /pt.
    • The “about the directory” heading has a third Glitter Graphics sparkle, credited in place and skipped under prefers-reduced-motion like the other two.
    • The language switcher moved out of the header and into the footer, so the top bar is down to the wordmark, the blog link and the account actions.
    • The footer sits on a solid tint of its own instead of the page background, so the bottom of the page has a defined edge in both themes.
    • The header markup moved into components/site-header.tsx, which leaves the whole footer editable on its own.
  46. v1.6.0

    Three new languages, off-directory picks, and checks that run themselves

    The homepage now speaks Spanish, French and Portuguese, a strip of hand-picked external sites sits under the directory, and CI keeps watch on every push.

    • The homepage ships in Español, Français and Português at /es, /fr and /pt, with hreflang tags, localized metadata and a language switcher in the header.
    • A new “Other cool sites” section links nine hand-picked corners of the web that live outside the directory — smaller, quieter cards, edited through config/cool-sites.json.
    • Site cards read better: the description and tags moved under the title so the whole pitch is one link, with the vote row separated beneath.
    • Continuous integration now validates content, checks the external links, typechecks and builds on every push and pull request.
    • A GitHub Actions workflow deploys the Cloudflare Worker automatically, so push notifications and /stats stay live without a local machine.
    • Deeper SEO groundwork: sitemap entries for the new languages, richer structured data, and keyword coverage for plain “base31” searches.
    • Search accepts ?q= deep links, and directory entries carry a language field ready for translated filtering.
  47. v1.5.0

    A calmer desktop, golden stars, and a shake for the directory

    The pieces at the bottom of the page line up on a desktop, and the two collapsible sections now behave the same way.

    • The Support hub and the FAQ center in the page on a desktop instead of hugging the left edge.
    • Review stars are gold now — the Trustpilot badge and wordmark keep their green.
    • The footer's contact row and link row are organized into two spaced zones on a desktop.
    • The corner visitor counter is restyled as a status chip with a live pulse dot, and it pops on a view milestone.
    • Closing or opening Featured sites gives the section the same little shake the Support section has.
  48. v1.4.0

    Sponsorship has a page, and the hero is tidier

    There is now somewhere to send people who want to advertise here, and the top of the homepage no longer offers two ways to reach the same list.

    • New /sponsor page: the two paid slots, how to book one, the house rules, and a straight answer about what sponsorship does not buy — a directory listing, which stays free.
    • The sponsored placements link to it, and the bottom of the homepage carries the invitation with a second animated sparkle.
    • The hero lost its redundant "Browse all sites" link and gained a Surprise me button that reads like a button, sitting beside "Why base31?" on a desktop and under it on a phone.
  49. v1.3.0

    An image compressor, and a sparkle in the header

    A twentieth tool joins the directory, and the header picks up a small animated flourish.

    • New Image Compressor: shrink or resize JPEG, PNG and WebP images, a batch at a time, without uploading anything to a server.
    • It reports the before-and-after size of every file and the total saved, and converts to WebP, JPEG or PNG as you choose.
    • A new guide page at /tools/imagecompressor explains when to pick which format, and why a PNG will not shrink.
    • An animated sparkle now sits beside the base31.org wordmark, with the credit in the footer.
  50. v1.2.0

    A guide page for every tool

    Every tool in the directory now has its own page on base31.org, written for people who want to know what a tool does before they open it.

    • 14 tool guides at /tools/<name>, each covering what the tool does, how to use it, and the questions people actually ask.
    • A tools index at /tools that lists every tool with its summary and tags, and links straight to each live tool.
    • Every guide publishes structured data — the page, the application, a breadcrumb trail, and its questions — so search engines can read what the tool is without guessing.
    • Guides link to related tools, and the directory now links through to the guides, so the pages are reachable rather than buried in a sitemap.
    • Content validation now fails if a published tool has no guide, or if a guide's copy is missing pieces.
  51. v1.1.0

    Stats, what's new, and a security policy

    The directory now shows its own numbers in public, keeps a changelog you can read, and publishes a security contact.

    • New /stats page: a 30-day visitor graph, all-time views, vote totals, subscriber counts, and the most liked tools.
    • New /whats-new page — this changelog, so a returning visitor can see what actually changed.
    • Contact details in the footer and in the site's Organization structured data.
    • A security.txt file at /.well-known/security.txt, so vulnerabilities have a private route in.
    • Google Analytics and Microsoft Clarity now load only after a cookie choice is made.
    • Bug and feature reports are delivered to hello@base31.org.
  52. v1.0.2

    Reviews, a support hub, and vote accents

    The homepage gained a real review section and one collapsible place for everything that keeps base31 running.

    • A Trustpilot review card with a five-star row, Trustpilot branding, and a rotating rainbow ring.
    • A collapsible Support section that gathers the reviews, the donation board, the sponsored links, and the ad in one spot.
    • The featured sites list can be collapsed, and a note explains when it is closed.
    • Thumbs up and thumbs down now carry green and red accents, and the chosen vote fills in.
    • The display stays awake while someone is reading, and the code backdrop is pinned to the top of the viewport.
  53. v1.0.1

    Four new tools, including two with AI

    Four more single-purpose sites joined the directory, three of them built from scratch.

    • QR Code Generator — custom QR codes for links, Wi-Fi, contacts, and messages, with PNG and SVG download.
    • Password Generator — strong passwords and passphrases, plus a vault encrypted with your own master passphrase.
    • GitHub Explorer — browse any repository's files and draft READMEs and docs with AI.
    • Is It Taken — check whether a domain is available, with instant alternatives.
    • Is It Down was rebuilt with live HTTP, DNS, and latency checks.
  54. v1.0.0

    base31.org goes live

    A directory for the interesting internet opened its doors.

    • 19 hand-built tools and experiments, each on its own subdomain.
    • A blog for longer writing about the open web.
    • Thumbs up and thumbs down on every entry, with shared totals.
    • Community uploads: anyone can publish a small static site into the directory.
    • Email and browser push notifications for new additions, plus a donation board and sponsored links.

The next update will show up here and in the RSS feed. Curious about the numbers behind it all? See stats.