Social Algorithm Updates: X, Reddit, TikTok, Pinterest, Facebook and LinkedIn

Six platforms, one bar: official posts, primary documents and named executives only, with the invented "algorithm updates" called out as such.

Last updated: Last checked: Six platforms tracked on official sources only; no confirmed ranking change is rolling out on any of them
80M+People searching on Reddit weeklyQ4 2025 shareholder letter
23Commits in X's open-source algorithm repoGitHub API, 5th Sep 2026
19.9%ByteDance's stake in TikTok's US joint ventureClosed January 2026
16,000Lifelong user actions Pinterest's feed ranking readsTransAct V2, engineering blog

This page tracks ranking, recommendation and search changes across X, Reddit, TikTok, Pinterest, Facebook and LinkedIn.

These platforms publish no update dashboards. They confirm changes rarely and unevenly, sometimes only in SEC filings, court documents or engineering blogs.

So the bar here is strict. We need an official platform post, a primary document or a named executive on the record.

The "algorithm update" content industry invents the rest. Part of this page's job is saying plainly when a widely claimed update has no official basis.

We update within a day or two of significant confirmed changes. Every claim links to a source we have read, including the filings.

Social platforms timeline: the confirmed record

Every confirmed ranking, search and governance change across the six platforms, newest first, each meeting this page's confirmation bar. Rows link to our full coverage where it exists.

One dot per confirmed event across X, Reddit, TikTok, Pinterest, Facebook and LinkedIn, one lane per event type. Hover a dot to identify it; most dots click through to the entry below.
2023202420252026Product33Availability1Data16Ads1Legal5
DateEventTypeWhy it matters
2026
X tightens the cold-start slot for its Phoenix retrieval experimentProductAn eighteenth release, 25 files; the experiment-overrides map reaches the Phoenix request format; nothing this page watches moved
X merges its first outside pull request and ships an LLM reply-spam classifierProductA two-line fix from an outside contributor, then a 73-file release; the semantic-ID lookup client is removed
X switches its Phoenix aggregation default to a long-dwell variant; bot rules can file reportsProductThe mirrored default moves to DENSE_WITH_LONG_DWELL; Scarecrow gains an XReview intake client
X makes the risk-bucket ads blender its home-timeline defaultProductThe ads-blender default flips to multi_risk four days after the blender shipped; nine moderation rule files become two declarative tables
X publishes the sixteen countries where it gates adult contentProductThe list moves from a legacy Scala file into a setting reread every 30 seconds; score distributions can now be recorded per experiment bucket; no ranking weight changed
X threads a config-selectable ranking-model head tag through scoringProductRerankerHeadTag defaults to zero with nothing flipped; moderation rules gain a 1,039-line golden test corpus; no ranking weight changed
X caps ads by the risk labels of surrounding postsProductAd budget halves against safe posts only; the reply-score ratchet fails closed; ten court-reported Brazilian accounts named as not filtered; no parameter moved
X shows follower counts and bios to its reply-spam classifiersProductFollower count rendered for every post in the thread, bio for the thread starter; a stored reply score can no longer be raised; no parameter changed
X switches on its second-generation ad brand-safety verdict; Brazil list grows to 2,328ProductGrok's v2 labels now decide the ad verdict on posts it has scored; the electoral filter more than triples; dwell time enters the ranking weights
X adds a high-risk brand-safety verdict; reply-spam boundary moves to 100,000 followersProductSix severe labels split out of medium risk with ads still avoiding both; accounts between 80k and 100k followers move from reply ranking into spam detection
X: reply-spam boundary moves to 80,000 followers; 20 ad conversion types addedProductAccounts between 60k and 80k followers move from reply ranking into spam detection; view-through and in-app conversions enter the ranker
X: AI-generated trend labels enter For You postsProductTwo posts per timeline get a trend name above them, linking to the trend page; behind a flag that defaults to off
X: muted keywords reach the Following timelineProductThe reverse-chronological feed gets keyword muting for the first time, matching quoted posts and reply parents as well as the post itself
X: topic-diversity signals reach the ranker; brand-safety v2 defers to v1ProductThe 17th August semantic-ID counts now ship in the Phoenix request; an unlabelled post is no longer auto-rated medium risk under v2
X: topic-level diversity in For You, unannouncedProductSemantic-ID repetition counts join author repetition; follower count reaches the ranker; Following feed 100 to 110
X: Brazil election filter, and the weights misreading correctedProduct665 registered candidate accounts dropped from For You unless followed; "1 report cancels out 468 likes" called incorrect
X algorithm third release: weights, filters and a label toolProductCodebase roughly 10 to 15 times larger; "Under the Hood" shows an account its own visibility labels
LinkedIn: AI job-search training-infrastructure post publishedDataThe engineering blog keeps documenting the search stack
Pinterest: VLM relevance judging paperDataSearch quality measurement extends from LLMs to vision-language models
Reddit Q2: "Search referrals were choppy"DataStock falls ~11% after hours on the Google-dependence sentence; no search-user figure disclosed
Facebook tests video-first app entryProductClassic Feed demoted to a second tab in the test; US exploration in 2027
Reddit-Google data deal enters renegotiationLegalPer WSJ via CNBC: the ~$60M/yr deal is "ending soon"; shares slid 8%
X algorithm second releaseProductRunnable pipeline, mini Phoenix model, Grox, and ads blending documented
TikTok World 2026: Search Hubs and Creator AI SearchAdsPaid brand hubs sit above organic TikTok search results
TikTok GO: bookable travel inventory enters TikTok search and location pagesProductSix OTA and experience partners; deliberately not a separate tab, so search results and location pages are what changed
Amsive measures the March core update's social tollDatareddit.com -64.2 SISTRIX VI points in Amsive's analysis, x.com -45.9; Reddit rebounded after
Reddit Q1 letter: shopping placements in search resultsDataProduct listings inside Reddit search go strategic; bot verification called out
Reddit announces human verification for flagged accountsProductPasskey-class checks protect the authentic-human positioning
Facebook: original Reels watch time doubledDataRare before-and-after enforcement numbers from Meta
LinkedIn documents its feed rankingDataLLM retrieval + Generative Recommender; none of the mythical levers appear
Reddit tests AI shopping search (US)ProductProduct carousels with pricing inside purchase-intent search results
TikTok Local Feed launches in the US (opt-in)ProductA location-ranked discovery surface; first big JV-era consumer launch
Reddit: 80M+ weekly searchers; search unifiedDataCore search and Answers become one experience; agentic results piloted
TikTok US joint venture closesLegalAlgorithm hosted and retrained in Oracle's US data centers; ByteDance at 19.9%
LinkedIn documents its search stackDataLLM relevance judging and an SLM reranker, with published metrics
X open-sources its algorithm (again)Product79 files of Rust; the only citable primary for X ranking
2025
ByteDance signs the definitive TikTok agreementLegalThe September framework becomes a deal; close set for January
Pinterest documents LLM relevance assessmentDataFive-level relevance judged by fine-tuned LLMs, with accuracy numbers
Facebook announces the feed and search-grid redesignProductSearch results move to an immersive grid; dislike feedback tunes ranking
Pinterest boards become recommendation enginesProductBoard saves officially drive personalized recommendations
Reddit sues Perplexity, SerpApi and OxylabsLegalThe SERP-scraping suit; covered in depth on our Perplexity hub
Musk: X recommendations moving fully to GrokProductHeuristics slated for deletion; Grok to read every post and video
Reddit Answers expands to five new languagesAvailabilityFirst big international step; 70M weekly searchers at the time
Pinterest ships per-category GenAI reduction controlsProductUsers can see less generative-AI imagery; AI-modified labels roll out
Executive order approves the TikTok JV frameworkLegalThe algorithm-retraining requirement enters an official US document
Reddit Q2 letter: Answers grows 1M to 6M weekly usersDataThe AI search product becomes a disclosed growth metric
Facebook: unoriginal content loses distributionProductRepeat offenders get account-level reach penalties
Pinterest documents TransAct V2: 16k lifelong actionsDataWhat Homefeed ranking consumes, including search activity
Pinterest rebuilds visual search on VLMsProductImage-first search with automated attribute decoding
Facebook cracks down on spammy contentProductCaption and hashtag spam goes followers-only and loses monetization
Reddit Answers revealed to run on Gemini via Vertex AIDataReddit's Google dependence is two-sided: traffic in, model underneath
Pinterest documents LLM-powered search relevanceDataThe primary source for what Pinterest search relevance is
Reddit's first Google-volatility admission (Q4 2024 letter)DataA "periodic algorithm change" moved traffic; logged-out users most affected
LinkedIn's 360Brew paper posted, later withdrawnDataThe preprint the myth industry cites; all four versions removed from arXiv
2024
Reddit Answers launches as a US testProductThe AI search product's starting point
2023
The first X/Twitter algorithm open-sourcingProductA different, Scala-era system; do not cite it as current

Latest updates

Product

X tightens its cold-start slot for the Phoenix retrieval experiment, and wires per-request overrides into the ranking call

The eighteenth release landed at 21:03 UTC on 4th Sep, twenty hours after the seventeenth. It touches 25 files, adding 480 lines and removing 179.

The repository now holds 23 commits: 21 releases, the merged fix and its merge commit.

The ranking change sits in the author cold-start scorer, which reserves a slot for posts with few impressions. Its settings were gathered into one struct read once per request.

One rule tightened. For viewers in the treatment arm of the "codivert" experiment, a cold-start candidate must now also come from Phoenix's mixture-of-experts retrieval.

The control and holdout arms already excluded such posts. So the three arms are now split by where a candidate came from.

The engagement-counts hydrator lost its cold-start gate. It now runs whenever its own flag is on, or on shadow traffic.

The Phoenix request format gained an experiment_overrides map. That is the wire for the per-request overrides parameter added a day earlier.

Slate context gained two optional fields, exact_k and exact_gap. The diff carries them through the candidate model; nothing in the changed files reads them.

Training moved to "v8" semantic-ID snapshots, from v5. Exported log-probabilities and continuous predictions are now rounded through bfloat16.

Visibility filtering's dark-traffic mirror now targets a "devel" environment as well as staging. Most of its modules became crate-private.

Encrypted checkpointing retries a failed key unwrap up to four times with backoff. The mirrored defaults file changed only its sync timestamp, 16:22 UTC on 4th Sep.

Nothing this page watches moved. The aggregation default is still DENSE_WITH_LONG_DWELL, RerankerHeadTag is still zero, and the adult-content gating list is unchanged.

The standing caveat applies. Code in the repository is not proof of behaviour in the live product.

Product

X merges its first outside pull request, then ships a release that adds an LLM reply-spam classifier

Two things happened in the repository inside five hours. The first is new for this project.

X merged pull request #88 at 20:28 UTC on 3rd Sep. It is the only pull request the repository has ever merged.

The fix is two lines from an outside contributor. The home mixer's visibility-filtering hydrator was sending duplicate post ids whenever several candidates retweeted the same post.

The seventeenth release then landed at 00:37 UTC on 4th Sep. It touches 73 files, adding 1,954 lines and removing 1,926.

That took the repository to 22 commits: twenty releases, the merged fix and its merge commit.

The moderation change is the largest. Grox, the LLM moderation service, gained a "multi-step reply spam" flow.

It runs a Gemma-family model over a reply thread, up to ten posts and two images per post. It returns the post ids it judges spam and a reason.

The flow only considers replies under root posts whose author has at least 1,000 followers. The code calls the skip reason "low_blast_radius".

Replies from Grok's own accounts are skipped. Flagged posts get the existing reply-spam label, which feeds reply ranking.

The older single-reply spam filter moved the other way. Its follower threshold rose from 1,000 to 5,000.

The serving engine lost its semantic-ID lookup client, a gRPC service and 189 lines of code. Post history ids now arrive parsed in the request instead.

The home mixer gained a phoenix_experiment_overrides parameter, an empty string by default. It parses key=value pairs and sends them to Phoenix with each request, so experiments can be switched per request.

The Brazilian electoral filter grew again. Its account set went from 2,388 ids to 2,554.

Two more court-reported handles were judged not to be the candidate's account. The comment ledger records each one.

Elsewhere, the enforcement service adds a "very high follower count" skip rule. Visibility filtering drops its mutual-TLS settings and merges two cache flags.

The ranker's attention kernel now skips padded history. Nothing this page watches moved.

The Phoenix aggregation default is still DENSE_WITH_LONG_DWELL, RerankerHeadTag is still zero, and the adult-content gating list is unchanged.

The standing caveat applies. Code in the repository is not proof of behaviour in the live product.

Product

X flips its Phoenix aggregation default to a long-dwell variant, and lets its bot detector file reports

The nineteenth commit landed at 19:46 UTC on 2nd Sep. It touches 34 files, adding 1,081 lines and removing 525.

It is the sixteenth release since the repository opened, and the third in two days.

Two mirrored defaults moved, both the same way. rust_home_mixer_phoenix_aggregation_type and its retrieval twin changed from DENSE_WITH_SHORT_DWELL to DENSE_WITH_LONG_DWELL.

The parameter selects which aggregation Phoenix, the ranking model, applies when the home mixer calls it. Beyond the names, the two variants are not defined in the files this commit changed.

The sync timestamp in the file is 16:03 UTC on 2nd Sep. As before, a live feature switch can override the default per request.

The home mixer now asks Phoenix for "backbone scores" on every request, and each candidate carries them. The request and response formats gained fields for the backbone model's top log-probabilities and continuous values.

That reads as instrumentation. The raw outputs of the shared model travel alongside the per-action predictions, rather than changing the ranking.

The retrieval two-tower config turned on query-key normalisation and removed its attention logit cap.

The moderation-side change is the one to note. Scarecrow, the legacy rules engine X's code calls "botmaker", gained a client for an "XReview intake" service.

A rule can now file a report against a post or a profile. The report is marked source "proactive", surface "x_app", reporter id zero.

The example type in the code is bystander_impersonation, with an optional victim id. So detections from automated rules can enter a review pipeline without a person filing them.

Production and staging clients both exist. A no-op client counts skipped submissions, so the wiring can ship before the service does.

Visibility filtering continued last release's rewrite. Policies became a RuleEngine and the registry was rewritten.

A new test asserts that the rule names wired across fifteen tables are unique.

Encrypted checkpointing grew again, with KMS-wrapped data keys and an "XAIENC01" envelope header. RerankerHeadTag is still zero, and the adult-content gating list is unchanged at sixteen countries.

The standing caveat applies. This is read from a commit rather than from an announcement.

Code in the repository is not proof of behaviour in the live product.

Product

X makes the risk-bucket ads blender the default for the home timeline, and rewrites its moderation rules as two tables

The eighteenth commit landed at 20:47 UTC on 1st Sep. It touches 34 files and about 5,800 changed lines.

It is the fifteenth release since the repository opened, and the second inside one day.

One parameter moved, and it is the one this page has been watching. The mirrored default for rust_home_mixer_ads_blender changed from partition_organic_low_risk to multi_risk.

That is the value the blender selector maps to the MultiRiskBlender that shipped on 28th Aug.

That blender sorts a batch of timeline posts into safe, medium-risk and high-risk buckets. It caps the ad budget at half the safe posts.

When no safe slot exists the batch carries no ads. The exception is an advertiser that has accepted high brand-safety risk, whose ad can sit beside medium-risk posts.

Four days ago we described this logic as wired in but unused. It is now the default wherever X has not overridden the setting.

The file states its own limit: it mirrors config defaults as of a sync timestamp. A live feature switch can still select the older partition blender, the safe-gap blender or a time-gap blender per request.

The larger diff is in visibility filtering, the layer that drops, hides or interstitials posts. Nine rule files were deleted and their contents rewritten as two declarative tables.

One table holds post rules and one holds author rules, driven by a shared rule specification.

We read the new tables in full rather than the diff. The rule names survive unchanged, from PdnaTweetLabelRule to SuspendedAuthorRule and NullcastedTweetDropRule.

The sixteen-country adult-content gating list now reaches the rules through the evaluation context. The golden corpus added on 28th Aug is what makes a rewrite of this size checkable.

The ranking side gained an option rather than a change. A new recon mode for post semantic IDs decodes each ID back into a vector through a published codebook.

It then projects that vector into the post embedding, with the decoder frozen. That replaces learning an embedding table per ID level.

The default stays learned.

Alongside it: a model bundle exporter and encrypted checkpoint saving. RerankerHeadTag is still present at its default of zero, and the gating country list is unchanged at sixteen.

The standing caveat applies. This is read from a commit rather than from an announcement.

Code in the repository is not proof of behaviour in the live product.

Product

X moves its country-by-country adult-content gating into a live config, and starts recording ranking scores per experiment bucket

The seventeenth commit landed at 00:11 UTC on 1st Sep. It touches 54 files and about 2,980 changed lines, the fourteenth release since the repository opened.

The most concrete addition is a new parameters file in the visibility-filtering service. That is the layer that decides which posts get dropped, hidden or interstitialed.

It publishes a default list of the countries where adult content is gated. The first eight are Argentina, Australia, Brazil, Canada, Germany, Spain, France and the United Kingdom.

The rest are Indonesia, Italy, South Korea, Mexico, the Netherlands, the Philippines, Portugal and Thailand.

Sixteen countries, and the list is not fixed in code. The service reloads it every thirty seconds from a runtime setting called rust_vf_nsfw_gating_countries.

So the published list is a default that X can change without shipping anything.

The migration itself is the other half. The same file reads the legacy Scala configuration this replaces and increments a drift counter when the two disagree.

That is what a team does while moving a live rule between systems, rather than after.

This is the first time X's gating list has been visible at all. It is a list of jurisdictions rather than a statement of what each one requires.

X publishes no note explaining it.

The ranking-side change is measurement. A new switch lets X record its score distributions by experiment bucket.

It is called rust_home_mixer_enable_phoenix_score_stats_experiment_bucket. Until now they were recorded only in aggregate.

The six Phoenix scoring heads it covers are the familiar ones: favorite, reply, retweet, click, video quality view and share. Each observation is now tagged with the experiment name and the bucket a user fell into.

That is the instrumentation a ranking experiment needs to read its own results. It is not a ranking change: nothing about how posts are scored moved here.

The RerankerHeadTag from the previous release is still present with a default of zero. The lever added three days earlier has not been pulled.

The Brazilian electoral filter got its usual maintenance, the largest single diff in the release. Accounts moved in both directions, and the file's comment ledger keeps recording why.

One account, @CARLOSVIANA, left the filtered list and joined the accounts X believes are "not the candidate's actual account". Two more were added to the roll of reported handles with no live account behind them.

The rest of the release sits outside ranking. The Grok-based content pipeline gained a screening flow for video and the multimodal embedding server was reworked.

Model checkpoints gained encryption.

ProductX adds a config switch that can change which ranking-model head serves, and locks its moderation rules under a golden test corpus

The sixteenth commit landed at 22:37 UTC on 28th Aug. It touches 24 files and about 3,100 changed lines, the thirteenth release since the repository opened.

The ranking-side change is a new parameter, RerankerHeadTag, mirrored from X's feature-switch config with a default of zero. Every scoring request to the Phoenix ranker now carries it in the user-action sequence.

Every scored post comes back stamped with it.

The published code shows the tag traveling, not what the model does with it. The serving engine's parser and embedding tables gained handling for it in the same push.

The shape is a lever for serving different reranker variants, or model heads, to different requests. It works by flipping a config value rather than shipping code.

Nothing is flipped yet. The parameter file's only other change is its own sync timestamp, so the tag sits at zero.

The MultiRiskBlender ads logic from the previous release still had no parameter moved at this commit. It became the default on 1st Sep.

No weight in the ranking blend changed.

The bigger diff by line count is in visibility filtering. That is the layer that decides which posts get dropped, hidden or interstitialed.

The rules were refactored around a shared context module, and most rule files got shorter.

What makes that publishable rather than housekeeping is the new test material. It is a 1,039-line "golden corpus" of expected verdicts plus fixtures, compiled only for tests.

A change that alters any moderation verdict now has to edit a published expected result to pass. That makes future changes to these rules diffable in a way they were not before.

The README's only edit dates the Brazilian electoral account-list change to 27th Aug.

ProductX caps ads by the riskiness of nearby posts, and stored reply scores can now only fall

Commit 24c60942 was pushed at 01:00 UTC on 28th Aug. It touches 41 files for 2,071 added and 265 removed lines.

The change with the clearest advertiser consequence is a new ads blender, MultiRiskBlender. It sorts a batch of timeline posts into safe, medium-risk and high-risk buckets.

Those buckets decide how many ads the batch can carry.

The ad budget is capped at half the safe posts, on top of the existing spacing rules. When no safe slot exists, the batch carries no ads at all, with one exception.

An ad whose advertiser is marked as tolerating high brand-safety risk can still be placed beside medium-risk posts.

Every outcome is measured, including the reasons ads were withheld. The new blender is wired into the blender selector, but no parameter moved in this commit.

So which requests actually use it is not visible in the diff.

It became the default four days later, in the fifteenth release.

Second, the published schema caught up. Both copies of the protocol definition now carry reconCountAbove and reconGapAbove.

Those are the two topic-diversity fields the Rust code gained two days earlier. That closes the one-day schema lag that entry described.

Two renames ride along in the same files. Placeholder action 84 becomes CLIENT_TWEET_VIDEO_6SEC_VIEW, a named six-second video view.

An aggregation type flips from profile short dwell to profile long dwell.

Third, the reply-score ratchet from the same release got stricter in three ways. Before, the write was skipped only when the new score was higher than the stored one.

Now it is also skipped when the two are equal. The recorded reason was renamed from "higher_than_existing" to "not_lower_than_existing".

The read of the existing score also stopped failing softly. Until now a failed fetch logged a warning and the write went ahead anyway.

It now stops the write, so the ratchet fails closed.

And the Kafka publish now runs before the primary store write rather than after it. The code still gives no reason for the rule that scores may fall but not rise.

Fourth, the Brazil election filter's comment block now lists ten accounts, each with the same sentence: "We believe the account @X reported by the candidate is not the candidate's actual account, so we are not currently filtering it."

Two of the ten, @dayse and @ricar, were in the filtered set until this commit. So X is now declining, account by account and in public, to apply parts of the Electoral Court registry.

It does so where it judges the reported handle wrong.

Smaller changes: visibility filtering gained a sampled cache warmer for the base-post safety-label map. It is configured by environment variable and off by default at zero percent.

A new test pins that a muted CJK keyword matches whole tokens only. So muting one city name does not remove posts about another that contains it.

The parameter file changed by exactly one line, its own sync timestamp. Nothing X ships behind a flag moved, and the second-generation ad brand-safety verdict stays on.

The standing caveat applies as it has to the eleven releases before this one. This is read from a commit rather than from an announcement.

Code in the repository is not proof of behaviour in the live product.

ProductX starts showing follower counts to the model that judges reply spam

Commit 45b48ba6 was pushed at 20:04 UTC on 26th Aug. It touches 36 files for 873 added and 525 removed lines.

The change that reaches ordinary users is how X describes an author to its reply-spam model. That model decides whether a reply is spam.

Until now the prompt opened with a single line combining display name and handle. It now renders the handle, the display name, and two new optional fields: User Follower Count and User Bio.

Both reply-spam classifiers, the ranking one and the simple scorer, turn the follower count on. It is rendered for every post in the thread and for the reply being judged.

The bio is rendered only for the author of the post that started the thread.

The thread renderer also gained a heading telling the model exactly whose profile it is reading: "The user profile and any signals below describe the author of the reply being evaluated (the final post of the thread)."

Read that against the last fortnight and the direction is consistent. The eighth and ninth releases moved the follower boundary, first to 80,000 and then to 100,000.

That boundary decides whether a reply goes to reply ranking or to spam detection.

Follower count was already deciding which system judged a reply. It is now also visible to the model doing the judging.

That is a different thing, and one the code states plainly.

What the diff does not show is what the model does with it. So treat any claim that a small account is now scored worse as unproven by this release.

The second change is narrower and easier to describe. When a reply ranking score is published, the writer now fetches the existing score first.

It skips the write when the new score is higher than the stored one, recording the reason as "higher_than_existing".

A stored score can therefore fall or stay put, but not rise. A score of zero is what applies the reply-spam label.

The code gives no reason for the rule.

Three smaller changes. Visibility filtering lost its media fallback cache entirely, a million-entry cache plus both of its environment flags.

So during an outage of the post-entity service, media features no longer come from a stale copy. The author-lookup fallback cache stays.

Dark-traffic mirroring now refuses to run unless it can read a workload name. It never runs on hosts whose name ends in "-canary".

The ranking model also gained three ad prediction targets, including a combined long-dwell-and-conversion action. Requests can now carry the identifiers of conversion assets a user has been shown.

On the diversity work from earlier in the cluster, the home-mixer slate context gained two more fields. They are recon_count_above and recon_gap_above.

At this release, both published copies of the protocol definition still stopped at reconCosMilli. The Rust side had gained that field a day earlier.

So the published schema was running about a day behind the code that fills it. The next commit added both fields to the schema.

Finally, the parameter file changed by exactly one line, its own sync timestamp. Nothing X ships behind a flag moved today.

So the second-generation ad brand-safety verdict switched on yesterday stays on. No weight in the ranking blend changed.

ProductX switches on the brand-safety verdict it shipped disabled, and grows its Brazilian account list from 665 to 2,328

Commit 0d3cdd80 landed at 23:20 UTC on 25th Aug. It is +5,850/-586 across 47 files, the tenth release since 13th Aug.

It is also the first since 14th Aug to touch the README. The README renames its "Latest Updates" heading to "Notable Updates" and adds one line to the Brazil section: "(Account list updated August 25, 2026.)"

The advertising change comes first, because it reverses what the code said yesterday.

EnableAdsBrandSafetyVerdictV2 now defaults to true. That switch had defaulted to false since the second-generation verdict was published on 13th Aug.

The parameter file records its own sync from the live config as 25th Aug at 16:20 UTC.

What that turns on is narrower than the name suggests, and the fallback is the reason.

The v2 function hands straight back to the original whenever a post carries none of Grok's four second-generation labels. So for every post that classifier has not scored, nothing about the verdict changes.

Where those labels do exist, they now decide it. The six high-risk labels added in yesterday's release are identical in both generations.

So the most severe category is unaffected either way.

The medium-risk list is where the two differ. The v2 list reads Grok's second-generation "not safe for advertising" label plus an expanded version of it.

It leaves out NSFA at high precision, which forces a medium-risk verdict under the original.

The test for whether Grok has scored a post at all moved to the v2 labels too. So a post the second-generation classifier has touched is now judged entirely on that generation's evidence.

Second, the Brazilian electoral filter grew from 665 accounts to 2,328. The file went from 1,573 lines to 4,947.

The mechanism is unchanged: a hardcoded set of user IDs, each annotated with its username. The author of every candidate post is checked against it.

The post is dropped unless the viewer follows that account.

The source file now also names its legal basis and its data source, which it did not before. They are Article 28 paragraph 1-A of Electoral Resolution No. 23.610, and the Electoral Court's public 2026 candidate dataset.

Forty-seven of the newly listed usernames carry a comment saying no live account was found for them. So the list tracks the candidate registry rather than accounts X has verified one by one.

Third, four ranking weights and two related defaults moved, and one of them is a first.

Dwell weight goes from 0.0 to 0.05, so predicted dwell now carries weight in the score at all. Video quality view weight goes the other way, from 0.05 to 0.0.

Video open weight rises from 0.05 to 0.07.

The Phoenix aggregation default also switches from short dwell to long dwell. That points the same way as the dwell weight.

Fourth, and this one matters for anyone reading their own view counts. The code adds a separate view_count_on_home alongside the existing total view count.

Author cold start is the mechanism that gives newer authors a chance in the feed. It now reads that home-timeline figure instead of the total, for both its sampling and its eligibility threshold.

So views a post earns from search, a profile or a notification no longer count against its cold-start eligibility. The number of cold-start candidates considered also drops from five to two.

Fifth, ads on the Following timeline get their own reporting identity. Ad events are now tagged following_promoted or ranked_following_promoted rather than sharing the For You label.

Each ad entry now carries its impression id.

Sixth, and the diff invites the wrong reading here. The topic-diversity work from 17th and 18th Aug has not been removed.

Home mixer stops computing the semantic-ID repetition counts and rank gaps for itself. It uses the ones already attached to each candidate instead, and the structure carrying them gains a new field.

What went is a local calculation, not the signal.

The multiplicative scoring path added earlier in the month did go, along with two of the ranker's configuration switches.

Two changes outside ranking complete the release. The Following timeline gains a check through the social graph.

It asks whether the author of a reposted or quoted post blocks the viewer.

And the abuse-enforcement rules gain a route for acting on penalties requested by an upstream scoring platform. They also gain a new spam label that triggers a temporary suspension under the platform-manipulation policy.

The standing caveat applies as it has to the nine releases before this one. This is read from a commit rather than from an announcement.

Code in the repository is not proof of behaviour in the live product.

ProductX adds a fifth brand-safety verdict for its most severe labels, and moves the reply-spam boundary again to 100,000 followers

Commit d011592a landed at 18:51 UTC on 24th Aug. It is +1,418/-117 across 19 files.

It is the ninth release since 13th Aug and the first after a three-day gap.

The root README is untouched for the ninth consecutive release. So the code is again the only account of what changed.

The advertising change is the substantive one.

X's brand-safety verdict has carried four values since it was published: unspecified, safe, low risk and medium risk. This release adds a fifth, high risk, and moves six labels into it.

They are NSFW at high precision and at high recall, and gore and violence at high precision. The others are PDNA, egregious NSFW and soft NSFW.

Five of those six sat in the medium-risk list until this commit. Soft NSFW appears in the file for the first time.

Nothing about where an ad can go changed today, and that is deliberate. The helper deciding which timeline gaps an ad may fill is has_avoid.

It was rewritten in the same commit to match medium risk or high risk. So a post carrying any of those six labels still blocks the slots on either side of it.

What the release buys is a severity distinction the ad system can act on later. It applies in both label generations too.

The high-risk check runs first in the original verdict function. It runs again in the v2 function that reads Grok's second-generation labels.

That v2 path shipped off at this release. Its parameter defaults to false under the key rust_home_mixer_ads_bs_v2_exp_enabled.

It was switched on the next day.

Every ads-injection log line now records which bucket of that experiment a request fell into. That is the change you make when an experiment starts running rather than when it is written.

Second, the follower threshold from our 21st Aug entry moved again, from 80,000 to 100,000. That is three days after it went from 60,000 to 80,000.

The mechanics are unchanged. A reply is eligible for reply ranking only when one of two accounts is above the threshold.

Those are the account replied to and the account that started the thread. It is eligible for spam detection only when both are at or below it.

So accounts between roughly 80,000 and 100,000 followers move out of reply ranking and into spam detection. Coordinated spam keeps its own separate threshold of 1,000 followers, untouched.

Third, an 812-line new file adds a shadow comparison to visibility filtering. It is the most revealing part of the release.

When an environment flag is set, each filter request also goes to the legacy visibility-filtering client. The two sets of verdicts are compared post by post and counted as exact matches or differences.

The reference call has a 1.5-second timeout.

The harness refuses to run in production. Setting the flag with APP_ENV=prod returns the error "VF_DUAL_CALL_HARNESS_ENABLED is set but APP_ENV=prod; the reference comparator is staging-only".

That confirms in code something the repository has never stated in prose. The published visibility-filtering service is a rewrite being checked against an older implementation that is not published.

Two smaller changes complete the release. Four of Grok's second-generation safety labels and a "PTOS reviewed" marker now pass through to the home mixer.

So downstream ranking can see them.

And the safety-policy flow gained a cross-validator that second-checks child-safety classifications, now extended to violent-media violations.

The standing caveat applies as it has to the eight releases before this one. This is read from a commit rather than from an announcement.

Code in the repository is not proof of behaviour in the live product.

ProductX moves the reply-spam boundary from 60,000 followers to 80,000, and wires 20 ad conversion types into the ranker

Commit 28e414f5 landed at 19:10 UTC on 21st Aug. It is +856/-152 across 35 files, the eighth release in nine days.

The repository's root README is untouched for the eighth consecutive release. So once again the changes are documented only by the code.

The change with the clearest reader consequence is a single number moved twice.

In grox/flows/reply_spam/task_filter.py, two follower thresholds go from 60,000 to 80,000. Reading the file rather than the diff shows what they do: they are the same boundary, used in opposite directions.

A reply is eligible for reply ranking only when one of two accounts is above the threshold. Those are the account replied to and the account that started the thread.

Below that, both are skipped with the reason "low_blast_radius".

A reply is eligible for reply spam detection only when both of those accounts are at or below it. Above, it is skipped with the reason "reply_ranking_target".

So the number decides which of two systems reads the replies under your posts.

Moving it to 80,000 shifts accounts between roughly 60,000 and 80,000 followers. They leave reply ranking and enter spam detection.

A third filter, coordinated spam, keeps its own separate threshold of 1,000 followers. It still exempts high-PageRank and grey-badge accounts.

The bulk of the release is advertising.

Twenty new action types enter the ranking protocol. They are all conversions the old set could not express.

The first group is purchases, add-to-carts, sign-ups, tutorial completions and level-achieved events attributed inside a mobile app. Each has a paired view-through variant.

The second group is view-through versions of the purchase, add-to-cart, checkout-initiated, sign-up, site-visit, session, landing-page-view and upper-funnel conversions.

Supporting machinery arrives with them. There is a train_view_through_heads switch and a weight for in-app conversion loss.

There is also a flag for splitting head training by source, and a delayed-feedback marker plus a keep-mask. Those let conversions which arrive long after the impression be handled rather than treated as absences.

An advertiser cannot act on this yet, and all three switches default to off, but the direction is legible. X is building a ranker that can be trained on conversions nobody clicked.

Two smaller additions matter here. A new engagement signal, ClientTweetSearchQueryReformulated, joins the existing "not relevant to search" signal.

That means the model can now be trained on the fact that a searcher rephrased the query. It is the closest thing X's search has to a documented dissatisfaction signal.

And the slate context the 18th Aug release added to the request now comes back in the model's response. So the ranker can reuse what Phoenix scored with instead of recomputing it.

What the model actually does with those context signals is still not in the repository. That is four releases after we first said so.

One disclosure changed too, in xAI's favour. The Phoenix README used to say the export ships standard AdamW in the dense-optimizer slot rather than "production's tuned internal variant".

It now says "the flagship ranking configs and the nano twin train the production Muon recipe, which ships in full". AdamW is confined to the retrieval, gen-recs and legacy ranking presets.

The repository's central question is whether the released code is the code that runs. That is a narrowing of the gap, stated in the repository rather than announced anywhere.

The child-safety flow separately dropped its Grok 4.5 path and the 30% traffic dial that fed 4.6. That leaves 4.6 as the only cross-model validator.

ProductX builds AI-generated trend labels into For You posts, with a tap-through to the trend

X pushed a seventh release in eight days to the public algorithm repository at 20:22 UTC on 20th Aug. It is 479 lines added and 200 removed across 14 files.

The README is untouched for the seventh consecutive release. So the code is again the only account of what changed.

The substantive addition is a new hydrator, AiTrendFeedbackContextHydrator. It works on a whole timeline response rather than on one post.

It takes the candidates that qualify as standalone original posts. That means not a reply, not a repost, and no reply-thread parents.

It then asks a service which AI-generated trend each belongs to.

It then counts how often each trend appears across those candidates and keeps the two most frequent. It picks one post at random from each, and those two posts get the trend's name attached.

What a reader sees is a context label above the post, the same slot that already carries topic labels. The marshalling code makes topic labels win where both exist, so the trend label is the fallback.

One difference is visible and new: a topic label has never carried a link, and this one does. The trend name renders as an external link to x.com/i/trending/<id>.

So tapping the label leaves the post for the trend page.

The underlying structure is still X's topic-feedback type, which is the plumbing behind "show me less of this". So the label is a feedback prompt as much as a badge.

For a brand account, this is a small, random distribution lottery rather than a lever. The post chosen for a trend is a random pick among the candidates that share it.

So there is nothing to optimize toward and no way to tell after the fact.

What it does say is that X is now clustering posts into machine-generated trends inside the ranking pipeline. It is surfacing that clustering to readers by name.

That is a route out of your post and into a topic page. That page did not exist in the timeline before.

The rest of the release continues the slate-context work from the 18th Aug and 17th Aug releases. The Phoenix model now returns the slate context it actually scored with.

The ranker can use that in place of recomputing the values or reading stored ones.

That closes part of the question our 17th Aug entry left open. The diversity signals now travel back from the model as well as into it.

What the model does with them is still not in the repository.

Two caveats belong on this, and the second is stronger than the standing one. As always, code in the repository is not proof of behaviour in the live product.

And in this case both changes are explicitly gated. The trend-label hydrator sits behind a flag that defaults to off in the published code.

So does the served-slate-context switch. What has shipped here, then, is the capability rather than a confirmed rollout.

ProductX extends muted keywords to the Following timeline, and makes them match quoted posts and reply threads

X pushed its sixth release in seven days to the public algorithm repository at 21:25 UTC on 19th Aug. It is 3,303 lines added and 651 removed across 82 files, much of it training and GPU work.

The README is untouched for the sixth time, so the code is again the only account of it. One change in it affects who sees a brand's posts.

Muted keywords now filter the Following timeline. That feed's pipeline previously ran two filters, one for deduplicating reposts and one for self-reply chains.

A muted word had no effect on it.

This release adds a dedicated keyword filter to it. So a term a user has muted now suppresses posts in the reverse-chronological feed of accounts they deliberately follow.

The new filter is also broader than the one on For You. The difference is in the code rather than in any announcement.

It tests three pieces of text against the muted list. The first two are the post's own text and the text of the post it quotes.

The third is the texts of the parent posts above it in a reply thread.

Two new pieces of plumbing exist to make that possible. One is a hydrator that fetches the quoted post's text.

The other is an addition to the ancestor hydrator that keeps the parents' text.

The For You filter was renamed in the same commit from MutedKeywordFilter to ViewerMutedKeywordFilter. It still matches the post's own text and nothing else.

For anyone running a brand account, that is a distribution ceiling that has just moved and that nobody can measure. Consider a user who has muted your product name, a competitor's, or a term your posts habitually quote.

They will now lose your Following-timeline posts that merely quote a post containing it.

There is no reporting surface for muted-keyword suppression on any platform. So the only visible symptom is reach that does not add up.

The rest of the release is machinery. A new module computes an adult-content prior and the safety classification flows around it were reworked.

The visibility-filtering service gains a dark-traffic harness for replaying requests. The training stack gains two optimizers and a large amount of attention-kernel work.

None of that states a ranking rule. One smaller behaviour change also lands here.

When the Following pipeline fails to expand a reply's ancestors, it now keeps the post. It keeps the ancestors it already had, where before the failure dropped the candidate.

The standing caveat applies as it did to the five releases before this one. This is read from a commit, not from an announcement.

Code in the repository is not proof of behaviour in the live product.

ProductX wires its new topic-diversity signals into the ranker, and chains its two brand-safety generations

X pushed another release to its public algorithm repository at 18:57 UTC on 18th Aug. It is 208 lines added and 70 removed across 14 files.

It is a much smaller change than the four before it. The README is again untouched, and the code is the only account of it.

The first change closes a gap we flagged in the 17th Aug release. That one gave the For You slate builder repetition counts and ranking gaps for each candidate's semantic ID.

It did so at three levels of a topic hierarchy. But it stopped there: nothing in the diff showed the signals reaching the model.

They do now. The slate context sent to Phoenix with every candidate carries sid_known.

It also carries three levels of semantic-ID repetition count and three levels of gap. Those sit next to the author-level counts that were already there.

The second change is for advertisers, and it makes the newer brand-safety path less blunt. Yesterday's release added a second-generation verdict, at that point behind a flag that defaulted to off.

That verdict rated a post medium risk whenever Grok had not scored it.

It now checks first whether any of Grok's four second-generation labels exist on the post at all. If none do, it hands the post to the original verdict function instead of failing closed.

A test shipped with it is named for the behaviour: v2 defers to v1 when v2 has not ruled.

Two first-generation labels also leave the v2 risk lists, one from medium risk and one from low risk. The helper that used to strip first-generation labels written by Grok is deleted.

The effect is that the two generations no longer mix inside one verdict. The v2 function rules on posts it has labelled, and everything else is judged by v1.

The original function keeps its own rule of rating a post medium risk when Grok has not scored it.

The Following timeline also gets its own visibility filtering. The reverse-chronological pipeline previously shared the For You hydrator and now uses a dedicated one.

That hydrator asks the visibility service about each candidate plus its ancestors, its quoted post and its reposted post. It does so before the feed is built.

As with the previous four releases, this is read from the commit rather than from an announcement. A change to the code is not proof of a change to the live feed.

The brand-safety path in particular was gated at this release by a flag that shipped off. That flag was switched on a week later.

ProductX adds topic-level diversity to For You, in a release it did not announce

X pushed a fourth release to its public algorithm repository at 20:20 UTC on 17th Aug. It is 751 lines added and 162 removed across 34 files.

The top-level README that carried the 13th Aug and 14th Aug announcements is untouched. So the code is the only account of it.

The change most likely to reach a posting strategy is topic diversity. The For You slate builder already counted how many candidates shared an author.

It also counted how far apart in the ranking they sat. It now keeps the same counts and gaps for each candidate's semantic ID, at three levels of a topic hierarchy.

In plain terms, a repeated subject within one feed refresh is now measured. A repeated author already was.

The commit adds the signals and passes them on with each candidate. What the ranking model does with them is not in the diff.

Two author signals also start reaching Phoenix, the neural ranker. A post's author follower count is now filled in on the request for anything that is not a repost.

That field was previously left empty. A separate NSFW-author bit is set from the user service's own flags and labels.

The Following feed gets bigger. Its maximum result size moves from 100 to 110 with the ads slot count unchanged at nine.

So a refresh can return ten more posts than it could before.

Advertisers get a second brand-safety verdict path, and it shipped switched off. EnableAdsBrandSafetyVerdictV2 defaulted to false at this release.

Enabled, it reads a second generation of Grok-written safety labels and adds an expanded medium-risk tier. It fails closed, rating a post medium risk when Grok has not scored it.

The same applies when a review label is missing.

A disabled flag is not a live change to anything. So treat that as a signal of direction rather than a fact about today's feed.

It is the same shape as the cold-start sampling flag that arrived on the 14th and is still off.

One thing moved away from openness. The bot-detection module's README now records that its minimum-actions enforcement gate is redacted as well.

It ships as an impossible 999999 sentinel. The stated reason is that publishing it would reveal "the account-size floor below which scoring never fires".

ProductX drops 665 Brazilian candidate accounts out of For You, and corrects how its new weights are being read

A day after publishing its ranking weights, X added a second dated update to the repo's README. The larger half of it is a country-specific change to who gets recommended.

From 16th Aug, Brazilian electoral law requires providers that run recommendation systems to exclude certain accounts from their recommendations. Those are the official accounts of candidates registered with the Electoral Court, and those accounts' posts.

X says it is complying, and For You now runs a filter named Brazil2026ElectionFilter.

One word in the English README needs care. It describes accounts "reported to Brazil's Electoral Court", which means declared to it in the candidate registry, not reported by users for misconduct.

X's own Portuguese announcement is the clearer statement: these are the official accounts of registered candidates. The measure is compliance with Resolution 23.610/2019 rather than a sanction or a change to X's own rules.

The code names every account. A hardcoded list of 665 user IDs is checked against the author of every candidate post.

Each ID is annotated with its username. A post is dropped unless the viewer explicitly follows that account.

The filter also catches reposts and quotes of a listed account, and replies whose conversation thread reaches one.

X is explicit that the accounts are not suspended and their content stays on their profiles. It is equally explicit that the change will affect the visibility and reach of those profiles and their posts.

The legal text quoted in the code carries one exclusion that marketers should note. It applies "except in cases of paid boosting".

The second half of the update answers something that happened to X within a day of the weights going public. A reading spread quickly that a report cancels out a fixed number of likes.

X has now written the rebuttal into the code itself.

The weights multiply predicted probabilities, not engagement tallies. As the new comment in the scoring code puts it, "the weights do not multiply raw engagement counts".

So treating the ratio between two weights as a count equivalence is wrong.

The README is blunter about the specific claim, calling "1 report cancels out 468 likes" incorrect. It adds that the weights are "a multiple on your own predicted probability of Liking, Reporting, etc, which is substantially driven by your own behavior".

The comment also explains why the report weight is large in the first place: "the baseline probability of a Report is more than 1000x lower than a Like". So it has to be weighted up before the prediction can move the ranking at all.

That leads into the claim most likely to matter to anyone managing an account. It is that coordinated mass reporting or blocking can bury reach.

X gives two reasons it does not work that way. Recommendations are personalised, so "reports from bad actors will primarily affect recommendations for users who are similar to the bad actors" rather than suppressing the post for everyone.

The second reason is narrower and more concrete. An action only counts in the recommendation system if it happens on a post the Home Timeline served.

So "directly navigating to a post (i.e., coordinating via groupchat) has no ranking impact". A group cannot reliably make a target post appear in their own timelines to begin with.

X says it added the comments "so that LLMs or people reading it are more likely to understand it correctly". That is a fair description of what open-sourcing a ranking system now costs it.

On the Brazil filter it makes the opposite point in its favour: "A benefit of open-source is that you can see that changes like this exist, and exactly how they work".

ProductX publishes its ranking weights and its visibility filters, plus a tool that shows your own labels

The repo's own README, dated 13th Aug 2026, lists three additions. The first is the configuration parameters that blend predicted action values into a score.

The second is the code for systems that decide whether a post is filtered out of the For You feed.

The third is real Phoenix training code, in place of the old demonstration model. It comes with synthetic data generation so a proof-of-concept training run can be done.

The new systems are the ones that decide visibility rather than order. Visibility filtering determines whether to show a post, drop it, or show it behind an interstitial.

The release also opens the machinery feeding it. Those are label rule engines, account-scoring models, image and video models, and an enforcement service.

If you post on X, the scoring detail is the useful part. Phoenix predicts a probability for each action a viewer might take.

Those actions span engagement, clicks, attention, following the author, and negative signals such as mute, block and report.

Those probabilities are summed using the now-published weights, positive for positive actions and negative for negative ones. Three adjustments follow.

The first is a decay applied to each post after an author's first. The second is a discount for accounts the viewer does not follow.

That discount also hits replies and reposts from accounts they do follow. The third is a boost for authors whose impressions sit below a threshold.

The filters are equally concrete. Posts older than 48 hours are dropped before scoring, along with posts the viewer has already been shown.

So are their own posts, and reposts and replies from accounts they do not follow.

X's VP of Product Keith Coleman told TechCrunch that "You'll get the core ranking code that pulls posts and ranks them for any given user and assembles the feed", adding "This is the kind of thing that I think people will be fairly shocked that we are releasing".

The code is Apache v2 licensed, and TechCrunch puts the expansion at roughly 10 to 15 times the previous size.

The paired transparency tool sits on an "Under the Hood" page in the app's settings. Accounts that posted 10 or more times in the past month can download aggregate statistics as a JSON file.

It shows which visibility-affecting labels were applied to the account and its posts.

What is held back is stated openly: the Grox prompt files and some botmaker rules. The grounds are that "people could use it to try to game the system".

Engadget adds that ads code and systems outside the For You timeline stay unreleased.

So this does not meet Musk's stated goal that "every line of code touching the X system will be open source and third-party audited" in August. X says third-party recommender-system experts pressure-tested the release beforehand.

It does not say how they were chosen or whether their findings will be published.

StudyPinterest moves search relevance judging to vision-language models

The paper, from eight Pinterest researchers, describes vision-language-model relevance judging deployed at Pinterest Search to evaluate A/B experiments. It says "VLMs can provide reliable relevance measurement for experiments while greatly improving the evaluation efficiency".

The approach cuts the minimum detectable effects in online experiments.

It extends the system Pinterest documented in December 2025, where fine-tuned open-source LLMs score query-and-Pin relevance on a five-level scale. Those scores match human labels exactly 73.7% of the time and within one level 91.7% of the time.

For marketers: on Pinterest, "the algorithm" is unusually inspectable. The engineering blog has documented how search relevance is modeled.

It has documented what feed ranking consumes (up to 16,000 lifelong actions per user). Now it has documented how quality itself is measured.

The Pinterest section collects the trail.

DataReddit's "choppy" search referrals outweigh a 61% revenue quarter

Reddit's Q2 2026 shareholder letter reported its eighth consecutive quarter above 60% revenue growth. Revenue was $804.9 million, with net income of $253 million.

Daily uniques were up 18%. Logged-out daily uniques, the search-exposed cohort, were up 27%.

The sentence that moved the market: "Search referrals were choppy in the quarter, and traffic was more volatile later in the quarter". Shares sank roughly 11% in after-hours trading despite above-consensus guidance.

Huffman's framing leaned into independence: "While our visibility in referral traffic remains low, we're not building for drive-by traffic. We're building a daily destination."

One omission: this is the first letter in six quarters without a weekly-search-user or Reddit Answers figure. That breaks the series that ran 60, 70, 75 and 80+ million.

The quarter's other Google story compounds the dependence question. A week earlier, Reddit had discussed cutting off Google's AI access to its content.

That was per Wall Street Journal reporting carried by CNBC. The roughly $60-million-a-year data deal nears its end, with renewal talks under way.

The stock slid 8% on that report alone.

ProductFacebook tests opening straight into full-screen video, with Classic Feed demoted to a tab

Tom Alison's post, "Connecting Real People on Facebook", announced a test that opens the app directly into full-screen video. It promises that "Classic Feed will always be available as the second tab in the app, just one click away", plus an opt-out to remain Feed-first.

Rollout is staged: testing starts later this year in video-heavy international markets. US exploration is planned for the following year.

The same post bundled Facebook Verified (a free selfie-verification badge). It also bundled a Seller app for Marketplace and a Forum app for Groups.

Distribution-wise, this is the biggest Facebook change since the December 2025 redesign, which moved search results to an immersive grid. The app's default entry surface becomes a ranked video feed.

Note the dating: much trade coverage describes an "August 2026 redesign". Meta's own posts date the announcement to 9th Dec 2025 and this test to 24th Jul 2026.

No August feed post exists on the newsroom.

ProductX's second algorithm release makes the repo runnable, and documents ads inside the ranking pipeline

The second open-source release landed in xai-org/x-algorithm as a 187-file commit adding 18,263 lines. It holds a runnable end-to-end inference pipeline and a pre-trained mini Phoenix model (256-dimension embeddings, roughly 3GB).

It also holds the new Grox content-understanding service for spam detection and policy enforcement. An ads-blending module sits inside the home-mixer.

That last part is significant: the first public documentation of ads blended inside the For You ranking pipeline itself.

The commit history tells the other story. Musk had committed in January to re-releases "every 4 weeks, with comprehensive developer notes".

The GitHub record shows zero public commits between 20th Jan and this release. There were three commits total before the August release.

The gap is not a criticism we infer. It is the repo's own verifiable state, and claims that the cadence "was maintained" are false.

ProductTikTok GO puts bookable hotels and experiences inside TikTok search and location pages

TikTok announced TikTok GO on 12th May. It is a way to discover and book hotels, attractions and tours inside the app.

It is for users in the United States aged 18 or over.

The commerce story is the obvious one and it is not the reason this page carries it.

The reason is one sentence in the announcement about where the inventory appears: TikTok GO "surfaces lodging and things to do across the ways people already discover content on TikTok, through videos, search, and location pages".

Skift, which saw the feature at launch, puts the same point negatively: TikTok GO "is not a dedicated tab or section inside the app".

So this is a change to what a TikTok search result and a location page can contain. It is not a new destination bolted onto the side.

That is the same direction as the Search Hubs announced at TikTok World the following day. It is the second commercial layer to reach TikTok search inside two days.

The booking partners are Booking.com, Expedia, Viator, GetYourGuide, Tiqets and Trip.com. TikTok describes the app it is built into as one "more than 200 million Americans use".

That is its own figure and not an audited one.

For creators there is a direct incentive attached. Those who feature hotels, attractions and local services can earn commissions and take part in creator campaigns tied to bookings.

The announcement carries the note "Below is today's news made by TikTok USDS Joint Venture LLC" and quotes Adam Presser, the joint venture's CEO. So this is a product shipped by the American entity whose governance terms closed in January.

One correction to the natural reading, because the US newsroom post describes only the US. TikTok GO is not a US-only travel feature.

TechNode reported on 14th May that TikTok launched TikTok GO as a lifestyle-services brand in Indonesia, the US and Japan. It appeared in Indonesia first in late April, and its scope covers dining as well as travel.

We have not found a first-party TikTok post covering the Indonesian or Japanese launches. So those two markets rest on that reporting alone, and we have not verified what the feature does in either.

The standing caution for this platform applies here as everywhere on it. TikTok has said nothing about how, or whether, any of this affects For You ranking.

No ranking claim should be read into a booking product.

DataFacebook publishes the results of its originality crackdown: original Reels watch time doubled

Meta's "Rewarding Original Creators on Facebook" did something platforms almost never do: published distribution results for an enforcement wave. Views and watch time of original Reels about doubled in the second half of 2025 versus a year earlier.

Over 20 million impersonating accounts were removed in 2025. Impersonation reports about large creators fell by a third.

The updated guidelines draw the line concretely. Deprioritized in Feed and Reels: reaction-only watching, and stitching clips without additions.

Also deprioritized: narrating what is on screen without meaningful contribution, and minor edits of someone else's post.

Genuinely transformed content becomes eligible for recommendation and "may benefit from increased distribution".

The consequence sentence is blunt: "Creators who are not adding substantial creative value will see their content deprioritized, and they may see their account deemed non-recommendable and demonetized."

It capped an arc that ran through 2025's spam and unoriginal-content enforcement. It rhymes with Instagram's April crackdown: originality is now an eligibility condition across Meta's surfaces.

DataLinkedIn documents its feed ranking in detail, and none of the popular "rules" appear in it

"Engineering the next generation of LinkedIn's Feed", by Hristo Danchev, is the official reference the "LinkedIn algorithm" industry pretends exists elsewhere. Retrieval runs on an LLM-based dual encoder embedding members and posts.

Ranking runs on a transformer-based Generative Recommender. It processes more than 1,000 of a member's interactions in chronological order.

The signals it names: profile attributes (industry, experience, skills, geography) and engagement history (posts liked, commented on, dwelled on, skipped). It also names post metadata and engagement counts, device, and the interaction sequence over time.

Its learning philosophy in one sentence: "The model learns better from understanding what you chose to engage with than from the full set of what you were shown."

What it leaves out matters as much: no ranking-factor weights, no golden hour, no external-link penalty, no optimal posting cadence. There is also no mention of 360Brew, the withdrawn research preprint that guides cite as LinkedIn's "officially announced" new algorithm.

The LinkedIn section lays out the record against the myths.

A companion post in January had documented the search side. It covers LLM-judged relevance and a small-language-model reranker behind AI Job Search and People Search, with published evaluation numbers.

DataReddit: 80 million weekly searchers, and one unified search

Reddit's Q4 2025 shareholder letter carried the search beat's best stats engine: "over 80 million people searching directly on Reddit every week in Q4, up from 60 million just one year ago".

The product news in the same letter: "significant progress in unifying our core search with Reddit Answers", ending the two-surface era. Answers was released in five new languages, and, forward-looking, Reddit is "piloting dynamic, agentic search results that include media beyond text".

The series behind the headline comes from the quarterly letters. It ran 60 million weekly searchers in Q1 2025 and 70 million in Q2.

By then Answers had 6 million weekly users, up from 1 million. Q3 brought 75 million and Q4 80-plus million.

Reddit Answers, launched December 2024, runs on Google's Gemini via Vertex AI. That makes Reddit's Google dependence two-sided: half its traffic and the model under its own AI search.

LegalTikTok's US joint venture closes: the algorithm gets American governance

The joint venture closed on 22nd Jan as TikTok USDS Joint Venture LLC, with Adam Presser as CEO. ByteDance retains 19.9%, and Oracle, Silver Lake and MGX are managing investors on a majority-American board.

That is per CNBC's report of the company statement.

The statement said the venture "will operate under defined safeguards that protect national security through comprehensive data protections, algorithm security, content moderation, and software assurances for U.S. users".

The algorithm terms trace to the September executive order, whose accompanying fact sheet stated them verbatim: "The divestiture puts the operation of the algorithm, code, and content moderation decisions under the control of the new joint venture."

And: "it requires all recommendation models, including algorithms, that use U.S. user data to be retrained and monitored by America's trusted security partners."

Per the close reporting, the recommendation algorithm is now hosted in Oracle's American data centers. It is retrained, tested and updated on US user data.

Two disciplines for reading this event. It is a GOVERNANCE change: nothing official states any ranking behavior change.

Headlines inferring feed changes from it go beyond the documents.

And it makes TikTok the only major platform whose ranking system is, by agreement, forked and retrained per market. That is why every future "US TikTok algorithm" story will hang off this date.

ProductX open-sources its recommendation algorithm, for the second time in its history

Ten days after Musk committed to open-sourcing "all code used to determine what organic and advertising posts are recommended to users", the xai-org/x-algorithm repo appeared. It was 79 files, 8,816 lines, Apache 2.0, in Rust.

The architecture it documents: Home Mixer orchestrates the For You pipeline, and Thunder supplies in-network posts. Phoenix, a Grok-based transformer ported from the Grok-1 release, does retrieval and ranking by predicting probabilities across engagement types.

The final score is a weighted sum of predicted engagements, attenuated for author diversity.

The README's headline claim: "We have eliminated every single hand-engineered feature and most heuristics from the system." That matches the direction Musk had set in October 2025.

He said then that the system was moving to Grok reading every post and video, with heuristics slated for deletion.

One durable caution: this is X's second open-sourcing. The 2023 twitter/the-algorithm repo describes a different, Scala-era system, and its mechanics (boosts, heuristics) are routinely cited as current.

They are not. The 2026 repo explicitly repudiates them, and it is the only citable primary for how X ranks today.

Reddit: two search products and a Google dependence

The quarterly shareholder letters are the beat's stats engine, and the Google relationship has three distinct strands.

Reddit's beat has two halves that coverage constantly merges. The first is its own search products: classic search and Reddit Answers, the Gemini-powered AI search launched in December 2024.

The two were unified into one experience during Q4 2025.

And its visibility IN Google, where Reddit is among the most exposed large sites on the web.

The disclosed numbers all come from SEC-filed shareholder letters. Those are this page's primary channel because Reddit's own sites block automated reading.

Weekly searchers grew from 60 million (Q1 2025) to 70 million (Q2, with Answers at 6 million weekly users). They reached 75 million (Q3) and more than 80 million (Q4).

Reddit also reported roughly 50 million queries a day as of early 2025.

The Q2 2026 letter disclosed no search figure at all.

The Google relationship runs on three distinct strands.

Organic visibility: Reddit first admitted core-update exposure in its Q4 2024 letter ("volatility with Google Search triggered by a periodic algorithm change", primarily affecting logged-out users). In the March 2026 core update reddit.com lost 64.2 SISTRIX Visibility Index points in Amsive's 2,076-domain analysis.

It rebounded in the following weeks.

That figure is Amsive's analysis of SISTRIX data, not SISTRIX's own claim, and it measures keyword visibility, not traffic.

The traffic mix: Steve Huffman put it at roughly half Google, half direct on the Q3 2025 call. He added that AI chatbots are "not a major traffic driver today".

And the money: the roughly $60-million-a-year data-licensing deal with Google entered public renegotiation in July 2026. That is per WSJ reporting carried by CNBC, and Reddit had discussed switching off Google's AI access entirely.

Meanwhile Reddit Answers itself runs on Google's Gemini, so the dependence points both directions at once.

The product arc to watch: shopping placements inside search results ("browse listings and shop directly within the Reddit search results", per the Q1 2026 letter).

Also on the list: an AI shopping-search test with product carousels, and human verification for accounts flagged as likely bots. Piloted agentic search results complete it.

X (Twitter): the algorithm is literally public, cadence promises aside

The open-source repo is the only citable primary for X ranking, and it contradicts both the myths and the marketing.

X is unique on this page: its ranking system is published code. The xai-org/x-algorithm repo documents the For You pipeline end to end.

Home Mixer orchestrates, and Thunder supplies posts from accounts you follow. Phoenix, a Grok-based transformer, retrieves and ranks by predicting the probability of each engagement type.

Those probabilities are summed with weights and attenuated for author diversity.

The README's central claim: "We have eliminated every single hand-engineered feature and most heuristics from the system." Posts are scored independently of each other, from your context and history.

Three cautions keep X claims honest. First, there are TWO open-sourcings: the 2023 Scala repo describes a system that no longer exists.

Its boosts and heuristics are still quoted as current by guides.

Second, the promised four-week release cadence was not kept. The repo holds 23 commits since January, twenty of them in a single run from 13th Aug onwards.

There were gaps of four and three months before it, verifiable in its own history.

Third, the repo is the citable record rather than anything said about it. So Musk's October 2025 direction-setting counts for nothing here unless the code shows it.

He said then that Grok would read every post and video, with heuristics slated for deletion.

Since May 2026 the repo also documents ads blending inside the same ranking pipeline. That is more than most platforms have ever disclosed about how paid and organic content mix.

The August 2026 release went further again. It published the weights that combine predicted actions into a score.

It also published the visibility-filtering systems that decide whether a post is shown at all. Ads code and anything outside the For You timeline remain unpublished.

A day later the repo showed what that openness is for, in both directions. It published a filter naming 665 Brazilian candidate accounts that For You stops recommending under electoral law.

It also added code comments rebutting the reading of the new weights that had already spread. That reading was that a report cancels out a fixed number of likes.

Both are checkable in the code, which no other platform on this page can offer.

Two claims to retire when you meet them, on X's own authority. First, the weights do not multiply engagement counts, they multiply predicted probabilities.

Second, coordinated mass reporting does not broadly suppress reach. Recommendations are personalised, and an action only counts when it lands on a post the timeline served.

TikTok: governed algorithm, productized search, undocumented feed

The only official facts about TikTok's algorithm are governance terms, and its search results now sell placement above organic.

TikTok has never explained For You ranking beyond a high-level 2020 post. It publishes no ranking changelog and confirms no algorithm updates.

What it has, uniquely, is official GOVERNANCE. The US joint venture that closed in January 2026 puts the algorithm's operation under the JV.

The executive order's terms require recommendation models using US data to be "retrained and monitored by America's trusted security partners". They are hosted in Oracle's US data centers.

What Oracle retraining changes about ranking behavior is, officially, nothing stated at all. Treat any "the algorithm is changing for your For You page" headline as inference beyond the documents.

The search story is productization. At TikTok World in May 2026, Search Hubs put brand-controlled destinations at the top of the TikTok search results page.

The formats cover brand-name queries, TikTok Shop conversion and category queries where a brand buys exclusive share of voice.

TikTok reports a 36-times-higher engagement rate versus in-feed ads, its own internal figure.

Creator AI Search, inside TikTok One, matches brands to creators from campaign-performance history rather than follower demographics.

That pattern has since recurred twice, which is what makes it a direction rather than an announcement.

On 3rd Jun TikTok said its FIFA World Cup 2026 hubs sit inside the main app. They are reached by searching "FIFA World Cup".

It named the product suite behind them: TikTok GamePlan, sold to teams, leagues and broadcasters to drive discovery. That is a branded destination owning a query, again.

And TikTok GO put bookable travel inventory into search results and location pages in May. It deliberately has no tab of its own.

For anyone doing "TikTok SEO", the target has moved. Ranking first in TikTok search now means ranking first under whatever paid hub or bookable partner owns the query.

That changes what the discipline is optimizing for.

The other JV-era launch on this beat: the opt-in Local Feed in the US, ranked by location, topic and recency. It followed the European rollout in late 2025.

Pinterest: the platform that documents its own ranking

Engineering-blog disclosures with real numbers: what search relevance is, what feed ranking reads, how quality is measured.

Pinterest publishes no dated algorithm updates, but its engineering blog documents the production systems in detail. No other platform on this page matches that candor, and the trail is current.

Search relevance: an LLM teacher classifies query-and-Pin relevance on a five-level scale, reading enriched Pin text. It distills into a lightweight production model, with reported gains including +2.18% search feed relevance (April 2025 post).

Relevance measurement itself moved to fine-tuned LLM judges (December 2025: 73.7% exact match with human labels). It then moved to vision-language models (August 2026 paper).

Feed ranking: TransAct V2 in production Homefeed ranking models up to 16,000 lifelong actions per user. That is a 160-times scale-up over the prior system.

Its input sequence includes SEARCH activity, so what people search on Pinterest shapes what their feed recommends. The June 2025 post carried A/B results: repins up 6.35%, hides down 12.8%.

The user-facing controls are official ranking inputs too. The "refine your recommendations" tuner gained per-category controls to see less generative-AI imagery, with AI-modified labels on detected Pins (October 2025).

Board activity officially drives recommendations (boards "Make it yours" and "Boards made for you", October 2025).

Practical reading for marketers: on Pinterest, relevance is modeled semantics plus engagement history. Visual search is VLM-driven and image-first, and the levers that exist are documented.

Claims about fresh-Pin boosts, board-count requirements or hashtag rules have no official source.

Facebook: distribution rules with dates attached

A few official posts a year genuinely change reach, and the 2025-2026 theme is originality enforcement with published results.

Facebook's confirmable beat is a handful of dated posts a year that explicitly change distribution. They sit on top of the standing Content Distribution Guidelines.

That is the official list of what gets reduced Feed distribution, as distinct from what gets removed.

The 2025-2026 arc is originality enforcement. April 2025: posts with long distracting captions, excessive hashtags or unrelated captions go followers-only and lose monetization.

Spam networks lose reach too.

July 2025: accounts reusing others' content get account-level penalties, "reduced distribution on everything they share". Detected duplicates are suppressed in favor of originals ("Simply stitching together clips or adding your watermark does not qualify as meaningful enhancement").

March 2026: the published results, with original Reels watch time roughly doubled.

The surface itself is being rebuilt around video. December 2025's redesign moved search results to an immersive grid and added dislike-reason feedback that tunes ranking.

July 2026's test opens the app straight into full-screen video with Classic Feed one tab away.

One reading discipline for Meta posts: the newsroom bundles Facebook, Instagram, Threads and Meta AI stories freely. Only items explicitly about the Facebook surface belong in this section.

Instagram's parallel rules live on our Instagram hub.

LinkedIn: the real record versus the myth industry

Two 2026 engineering posts are the entire official record on ranking, and none of the circulating rules appear in either.

Through 2025, LinkedIn confirmed almost nothing about ranking. That changed in 2026 with two engineering-blog disclosures.

The first is the January search-stack post (LLM-judged relevance, a small-language-model reranker, published evaluation numbers).

The second is the March feed post (LLM dual-encoder retrieval and a transformer Generative Recommender). The recommender reads 1,000+ interactions in sequence, and the post names its signals.

That is the whole official record, and what it omits is the point. There are no ranking-factor weights, no golden hour, no external-link penalty, no posting-cadence advice, no format multipliers.

Every article asserting those cites, at best, third-party reverse-engineering that LinkedIn has never endorsed.

The 360Brew story deserves its own debunk because it wears academic clothes.

The paper describing a 150-billion-parameter ranking foundation model was posted to arXiv in January 2025. ALL FOUR VERSIONS were later withdrawn, with the administrators' note reading: "This version has been removed by arXiv administrators as the submitter did not have the right to agree to the license at the time of submission".

LinkedIn has never announced 360Brew as its live feed system, and the March engineering post never mentions the name. Whether the Generative Recommender it describes is that work productionized is stated nowhere official, in either direction.

Guides presenting 360Brew as "LinkedIn's officially announced new algorithm" are stacking invented numbers on a withdrawn preprint. Their attached thresholds, like a 35% reply-window boost or a 45% daily-posting penalty, have no official source.

The test from our Instagram hub applies here unchanged. Real ranking news arrives under a named engineer or an official blog, and everything else is inference or invention.

Frequently asked questions

How does the X (Twitter) algorithm work?

It is public code: the xai-org/x-algorithm repo documents Home Mixer orchestrating the For You pipeline. The Grok-based Phoenix model ranks posts by predicted engagement probabilities, summed with weights and diversity attenuation.

Its README says every hand-engineered feature has been eliminated.

Ignore mechanics quoted from the 2023 repo. That is a different, dead system.

Why is Reddit everywhere in Google results, and is that changing?

Reddit rode the 2023-2025 expansion of forum content in Google. About half its traffic came from Google per its CEO in late 2025.

The March 2026 core update cut reddit.com's visibility sharply before a rebound. Amsive's analysis put the loss at 64.2 SISTRIX Visibility Index points, and Reddit itself called search referrals "choppy" in mid-2026.

Volatile is the accurate word, in both directions.

What is Reddit Answers?

Reddit's AI search: it summarizes Reddit conversations with links out. It launched as a US test in December 2024 and runs on Google's Gemini via Vertex AI.

It grew from 1 million to 6 million weekly users during 2025 and expanded into five more languages. It was unified with core Reddit search in late 2025.

Reddit counted more than 80 million weekly searchers overall in Q4 2025.

Who controls TikTok's algorithm now?

TikTok USDS Joint Venture LLC, since 22nd Jan 2026: majority-American ownership with ByteDance at 19.9%. The executive order's terms require all recommendation models using US data to be retrained and monitored by US security partners.

Oracle hosts the algorithm, retrained on US data in its American data centers. Officially, nothing states how, or whether, ranking behavior changes.

How does the TikTok For You algorithm work?

TikTok has never officially explained it beyond a high-level 2020 post naming input categories. It announces no ranking changes.

The confirmed 2026 stories are governance (the joint venture) and search productization. Paid Search Hubs now sit above organic results for covered queries.

That is worth more to a marketer than any unofficial ranking theory.

How does the LinkedIn algorithm actually work?

Per LinkedIn's own 2026 engineering posts, the only official record: LLM-based retrieval plus a transformer Generative Recommender. It reads over a thousand of your interactions in order, using profile, engagement-history and post signals.

No golden hour, link penalty, posting cadence or format multiplier appears anywhere official. The 360Brew paper the myth articles cite is a withdrawn preprint LinkedIn never announced as its live system.

Does Facebook penalize unoriginal content?

Yes, explicitly and account-wide: since July 2025, repeat reusers of others' content get reduced distribution on everything they share. Duplicates are suppressed in favor of originals.

Meta's March 2026 results post reported original Reels watch time roughly doubling after the crackdown. Spammy caption and hashtag patterns separately go followers-only under the April 2025 rules.

Spotted a change we have not covered? Ranking volatility, a new SERP test, a platform change: email us a tip and we will credit you if we cover it.
Cite this page: Keywords Everywhere, "Social Algorithm Updates: X, Reddit, TikTok, Pinterest, Facebook and LinkedIn", last updated 5th Sep 2026, https://keywordseverywhere.com/news/social-algorithm-updates/