Återstod

How ranking works

Every web result gets one score, and results are shown highest first. The same query gives everyone the same order: we don't use your history, location, account or device. You can set your own weights (below); they live in your browser, not with us. The numbers below are read from the running code, so they are always the current ones.

score = text match × links × duplicate × page type × language × local × site topic × places and names × year × site × clicks × shopping × curation

Each result has a quiet why link that shows these numbers for that result.

1 · text match

PostgreSQL full-text ranking (ts_rank_cd, cover density) of your words against the page, with normalization flag 32. Where a word appears matters:

titlethe page title (and an English title, if we made one)1.0
descriptiontags, keywords, summary and the page's description0.4
bodythe page text (first 20,000 characters)0.1
whole querythe query exactly as typed, place words included, added at this weight+0.5×
synonymsalternatives with one word swapped for a synonym (English), added at this weight+0.35×
CJKChinese, Japanese and Korean pages match on character pairs+1×

Link (anchor) text is not a ranking signal; we use it only to find pages. If no page matches every word, pages matching your rarer words are shown instead (up to about 6 % of the index).

Query syntax: every word must match (in any form: running finds run); "two words" for a phrase, -word to leave pages out, or between alternatives, site:example.com for one site. A word of at least 3 letters ending in * or % matches every word starting with it (astro* finds astronomy, astrophysics …); shorter ones, and a * at the start or inside a word, are searched as the plain word. An empty search, * or % browses everything.

Images, video, audio and files are scored by their own words (alt text, caption, file name; ×2), +0.05 when they sit on one of the 150 best-linked pages that match, plus a small link-rank tie-breaker. At most 3 come from one page before the next page gets a turn, images without a preview go last, and logos / icons / site-wide images are hidden unless you ask for them. Every tile has a quiet why link with this breakdown.

2 · multipliers

links1 + 0.1·ln(1 + inbound links) + 0.25·ln(1 + linking domains) + 0.3·ln(1 + link rank)≥ ×1
duplicatea near-copy of another page×0.3
page typelistings, feeds and directory pages, compared with normal pages×0.6
languagethe page is in the language your query is written in (detected from your words only); other languages are still shown×1.25
localonly for places you type, and only for pages or sites that serve that area: ZIP code ×1.8, city ×1.5, state ×1.4. No location tracking.up to ×1.8
site topicthe site's main topics include a word you typed×1.15
places and namesa place you typed is a main subject of the page (×1.25), or a person or organisation you named (×1.12)up to ×1.25
yeara year you typed is one the page is about×1.1
sitewhat kind of site it is and how it is linked (TrustRank from hand-picked seed sites). Spam-like sites ×0.6, template farms ×0.75, mostly linked from spam ×0.85; well-linked personal and indie sites up to ×1.15; other sites in the top trust decile ×1.05.×0.6–×1.15
clickshow often the result is clicked compared with what its positions predict, from anonymous daily counts (no IP, no cookie; deleted after 30 days). Neutral until a page has 50 impressions and the site 200 clicks; smoothed (+3) and damped (ratio^0.25).×0.85–×1.15
shoppingonly when your query asks to buy something (buy, for sale, cheap, price …) and shopping is on: pages and shops that sell goods. Never paid; words like "buy" are matched softly, so a page doesn't have to contain them×1.4
curationa moderator buried this page for this query, its close variants, or everywhere (see human curation below)×0.2

3 · the shortlist

For speed, the full text score is computed for the best 3,000 matches only. They are picked by a cheap score: your words in the title ×3, × links, duplicate, page type, language, a typed place or name ×1.2, × site and clicks. The sort options (newest, oldest, recently crawled) pick the shortlist by date instead.

4 · human curation

Every result has a quiet wrong? link. Anyone can say a result is off topic, spam, outdated, broken, mislabeled or should rank higher, with an optional short note. No account; no IP, browser or exact time is stored, only the query (normalized), the page, the reason, the note and the day. Programs can do the same through the API; bonded Moonsox bots count ×2.0, other API calls ×0.5, the form ×1.0.

Agreement acts on its own. Three agreeing notes (total weight 3 or more) within 30 days are enough, with no moderator: a label correction (adult / NSFW, not adult, graphic, spam, hate speech, illegal goods, or removing one of those) is applied to the page and its images at once; off topic, spam, outdated or broken buries the page for that query and its close variants for 30 days. A moderator's own decision always wins, disagreeing notes stop it, and child-safety, malware, doxxing and threats never go this way: use Report for those.

A moderator reads these and may:

pinput a page at a fixed position (1–20) for a query or its close variants; at most 3 pins per queryplace
burylower a page for a query, its variants, or everywhere×0.2
hideleave a page out for a query, its variants, or everywhereout

“Close variants” means the same words in any order, plurals and the synonyms listed for query expansion. Every decision needs a written reason, is kept in an audit log, can be undone in one click, and expires after 180 days unless a moderator renews it. The “why” link on a result says when a moderator changed it.

Right now: 0 pins, 0 buries, 0 hides active; 5 “wrong?” notes in the last 30 days.

5 · your own weights (optional)

In Settings → Ranking you can nudge six signals, each from −2 to +2. The middle is the order everyone gets, and that's the default. Your levels are kept like your other settings (in this browser, or with your settings key) and travel in the search link as pw_…; there's no cookie and nothing is logged. Each one adds a single bounded multiplier to the best 3,000 matches. At the ends (±2) it also leans on the cheap first pass that picks those 3,000, so pages the default order would never reach can come in. Neither step makes a search slower.

personal weights
weightwhat it doesrange
freshnessby the page's date (the effect fades over about 3 years of age); undated pages untouched×0.45–2.23
site sizeby the site's Tranco rank; sites outside the top 1M untouched×0.33–3.00
link trustlinks × site counted ^0 (ignored) to ^3 (three times)^0–3
click feedbackclicks counted ^0 to ^3^0–3
same languagethe ×1.25 same-language boost counted ^0 to ^3^0–3
text matcheverything except the words counted ^3.3 (less) to ^0.33 (more): the same order as text^0.3 … text^3^0.3–3

At ±2 the shortlist itself leans the same way: freshness and site size count twice in the first-pass score (site size +2 puts a top-1,000 site at about ×0.33 or less, so small sites fill the 3,000), and link trust, clicks and language are re-weighted there too. The total number of matches never changes.

The why link on a result lists your weights as their own lines, and the numbers still multiply to the score.

not part of the score

  • Hide big sites removes sites in the Tranco top-N you choose. Size never raises or lowers a score.
  • Era, years and date sorts are filters and orderings, not boosts (a year you type is the year boost above).
  • Moderation labels (for example “adult”) are shown on results and may blur a thumbnail. They don't change the score; removed pages are not shown at all. The adult-content setting (show / blur / hide) is yours: blur is the default, and hide leaves adult- and graphic-labeled results out entirely.
  • “wrong?” notes change nothing one by one; only three agreeing notes (above) or a moderator's decision do.
  • Ads, payments, partnerships: none. Nobody can buy a position.

changelog

v9p
Prefix wildcards: astro* or neo% (a word of 3+ letters) matches every word starting with it; an empty search browses everything without putting * in the box. Image, video, audio and file tiles get a quiet 'why' link and a 'wrong?' link that can correct labels (3 agreeing notes apply it). Blur now also covers the site icon and URL lines. Ranking unchanged.
v9o
Personal weights reach about twice as far (freshness ×0.45–2.23, site size ×0.33–3, the others ^0–3), and at ±2 a slider also shapes which 3,000 matches make the shortlist. The deep switch is gone. The default order is unchanged.
v9n
Optional personal weights (Settings → Ranking): six sliders, −2..+2, each one bounded multiplier on the shortlist. The default order, the one everyone gets, is unchanged.
v9m
Human curation: a quiet “wrong?” link on every result, and moderator pins, buries and hides for a query (bounded, expiring, audited). Buried pages get ×0.2; nothing else changed.
v9l
This page and the per-result “why” view. The formula is now built from one weights table that this page reads, so it can't drift from the code. No weights changed.
v9h
Long queries: if no page matches every word, the rarer words are matched instead (any-word fallback, capped at ~6 % of the index), and the title test is pre-filtered. Weights unchanged.
v8b
“Hide big sites” filter (Tranco top-N). It removes sites; it never changes the score of the rest.
v6b
Two-stage ranking for speed: a cheap candidate score picks the top 3,000 matches, then the full text score ranks those.
v6
Click feedback (bounded ×0.85–×1.15), site context (kind + link trust, ×0.6–×1.15), entity boosts (place, name, year) and synonym alternatives at reduced weight.
v2.1–v3
Same-language boost (×1.25) for pages in the language of your query; local pages boosted only for places you type (no location tracking).
your ranking · change it