Reverse Engineering - Mars 2026 Reverse Engineering - March 2026

Comment TikTok décide ce que vous voyez

How TikTok decides what you see

Dans les entrailles de l'algorithme le plus addictif au monde

Inside the world's most addictive algorithm

Feed

19 prédictions par vidéo

19 predictions per video

Search

16 sources de retrieval

16 retrieval sources

Ads

Formule quadratique eCPM

Quadratic eCPM formula

Commerce

9 modèles ML dédiés

9 dedicated ML models

RESONEO

Ce que vous allez découvrir

What you're about to discover

En installant TikTok v44.2.1 dans un émulateur Android et en interceptant les échanges réseau entre l'application et ses serveurs, nous avons pu reconstituer le fonctionnement interne de quatre systèmes de classement distincts. Pas la théorie, pas les brevets : les configs réelles de production, les noms de modèles, les seuils, les formules.

Le pipeline principal fonctionne en 6 étapes, du serveur à votre écran. Au cœur du système, un modèle unique (v1054) prédit 19 comportements simultanément pour chaque vidéo : la probabilité que vous likiez, que vous partagiez, que vous commentiez, que vous quittiez, que vous regardiez jusqu'au bout. La formule de scoring combine ces prédictions selon des exposants différenciés qui révèlent une hiérarchie claire : le temps de visionnage pèse plus que les likes (exposant 1.08 vs 0.84), et la "valeur intrinsèque du contenu" reçoit un multiplicateur de x5.

Le moteur de recherche TikTok a son propre pipeline, ses propres modèles, et un LLM de pertinence (décembre 2025). Ce n'est pas un sous-ensemble du feed. Le premier résultat est évalué par un modèle dédié qui optimise pour que vous ne changiez pas de requête.

La publicité est régie par une formule quadratique de seuils : seules les pubs les plus lucratives ont le droit d'apparaître en haut du feed. Sur mobile, l'espacement minimum entre deux pubs est d'une seule vidéo. Les pubs peuvent être remontées dans le feed, jamais descendues.

En e-commerce, le taux de clic est élevé à la puissance 4 dans la formule de scoring. Doubler votre CTR multiplie votre score par 16. Les "key sellers" reçoivent un boost de x10 000 dans le rawrank, un traitement préférentiel non-transparent qui n'apparaît dans aucun programme officiel de TikTok Shop.

Ce document présente ces quatre surfaces une par une, avec les données brutes, les formules et les implications concrètes pour les créateurs, les spécialistes SEO et les marketeurs e-commerce.

By installing TikTok v44.2.1 in an Android emulator and intercepting the network traffic between the application and its servers, we were able to reconstruct the inner workings of four distinct ranking systems. Not theory, not patents: actual production configs, model names, thresholds, formulas.

The For You feed's main pipeline works in 6 steps, from server to your screen. At the heart of the system, a single model (v1054) predicts 19 behaviors simultaneously for each video: the probability you'll like, share, comment, leave, watch to the end. The scoring formula combines these predictions with differentiated exponents that reveal a clear hierarchy: watch time weighs more than likes (exponent 1.08 vs 0.84), and "intrinsic content value" gets a x5 multiplier.

TikTok's search engine has its own pipeline, its own models, and a relevance LLM (December 2025). It's not a subset of the feed. The first result is evaluated by a dedicated model that optimizes for you not changing your query.

Advertising is governed by a quadratic threshold formula: only the most lucrative ads are allowed to appear at the top of the feed. On mobile, the minimum spacing between two ads is a single video. Ads can be moved up in the feed, never down.

In e-commerce, click-through rate is raised to the power of 4 in the scoring formula. Doubling your CTR multiplies your score by 16. "Key sellers" receive a x10,000 boost in rawrank, a non-transparent preferential treatment that doesn't appear in any official TikTok Shop program.

This document presents these four surfaces one by one, with raw data, formulas, and concrete implications for creators, SEO specialists, and e-commerce marketers.

Trois sources d'analyse

Three analysis sources

1. Interception mobile

1. Mobile interception

Émulateur Android (Pixel 7 AVD, Android 14). Installation de l'APK, extraction des fichiers internes, configs de production et modèles ML.

Android emulator (Pixel 7 AVD, Android 14). APK installation, internal file extraction, production configs and ML models.

2. Analyse web

2. Web analysis

Interception du trafic réseau sur tiktok.com, sessions connectées et non-connectées. API JSON, paramètres A/B, ciblage publicitaire.

Network traffic interception on tiktok.com, logged-in and anonymous sessions. JSON API, A/B parameters, ad targeting.

3. Code désobfusqué

3. Deobfuscated code

207 359 classes Java analysées. Modèles ML, formules de scoring, pipelines de ranking, taxonomies et paramètres de configuration.

207,359 Java classes analyzed. ML models, scoring formulas, ranking pipelines, taxonomies and configuration parameters.

Limite méthodologique : cette analyse porte sur la version US de TikTok (v44.2.1, mars 2026). Les algorithmes serveur restent une boîte noire - nous ne voyons que les entrées et sorties du pipeline. Les poids de scoring on-device sont injectés par le serveur et peuvent changer à tout moment via A/B test. Les données présentées sont un instantané, pas une vérité permanente.

Methodological limitation: this analysis covers the US version of TikTok (v44.2.1, March 2026). Server-side algorithms remain a black box - we only see the pipeline inputs and outputs. On-device scoring weights are injected by the server and can change at any time via A/B testing. The data presented is a snapshot, not a permanent truth.

Sommaire

Table of contents

Acte IAct I

Le feed For You

The For You feed

Comment TikTok classe les vidéos que vous voyez

How TikTok ranks the videos you see

For You feed
1

Le pipeline du feed, de la sélection à votre écran

The feed pipeline, from selection to your screen

6 étapes, 9 systèmes de retrieval, 5 listes de ranking parallèles

6 steps, 9 retrieval systems, 5 parallel ranking lists

SERVEUR

1. Recall (retrieval)1. Recall (retrieval)

9 systèmes de retrieval en parallèle : Two-Tower NN (Viking), BERT 2-hop, retrieval depuis vos recherches antérieures, tags, compteurs

9 retrieval systems in parallel: Two-Tower NN (Viking), BERT 2-hop, retrieval from your past searches, tags, counters

9 sources

2. Raw rank (premier tri)2. Raw rank (first pass)

Filtrage de sécurité (ANSA ban), risk query, scoring CTCVR brut

Safety filtering (ANSA ban), risk query, raw CTCVR scoring

FiltreFilter

3. Fine rank3. Fine rank

Modèle v1054 : 19 prédictions simultanées par vidéo. Scoring par value tree avec 2 gammas + 1 multiplicateur

Model v1054: 19 simultaneous predictions per video. Value tree scoring with 2 gammas + 1 multiplier

19 targets

4. Diversification4. Diversification

21 macro-catégories (CT 100-120), sous-catégories (divIds), labels lisibles. Évite 2 items du même bucket consécutifs

21 macro-categories (CT 100-120), sub-categories (divIds), human-readable labels. Prevents 2 consecutive items from the same bucket

21 CT

5. Rerank serveur5. Server rerank

Beam search diversity (beta=0,02), mix multi-canal (video, article, live, user, musique), gouvernance (-1 000 000 pour contenu problematique)

Beam search diversity (beta=0.02), multi-channel mix (video, article, live, user, music), governance (-1,000,000 for problematic content)

5 canaux5 channels

Réponse API (188 champs) API response (188 fields)
Votre téléphone Your phone

6. Reranking client (sur votre téléphone)6. Client reranking (on your phone)

  • Pitaya ML ajuste le placement des publicités (business : tiktok_showtime_ad_gap, fonction : adjust_items)
  • Pitaya ML adjusts ad placement (business: tiktok_showtime_ad_gap, function: adjust_items)
  • ByteNN (ByteDance Neural Network) prédit en temps réel si vous allez ouvrir les commentaires (modèle will_enter_comment, 122 signaux répartis en 12 catégories)
  • ByteNN (ByteDance Neural Network) predicts in real-time if you'll open comments (model will_enter_comment, 122 signals across 12 categories)
  • 5 listes de ranking parallèles (sort, sati, fyp, client, final) avec raisons de reranking = système d'audit complet
  • 5 parallel ranking lists (sort, sati, fyp, client, final) with reranking reasons = full audit system

Affichage + feedback

Display + feedback

30+ signaux comportementaux renvoyés au serveur par vidéo (duree, play_delta, share_delta, pre_item_playtime...). Délai de batching : 200 ms, seuil minimum : 2 événements.

30+ behavioral signals sent back to the server per video (duree, play_delta, share_delta, pre_item_playtime...). Batching delay: 200 ms, minimum threshold: 2 events.

Les 9 systèmes de recallThe 9 recall systems

# SystèmeSystem Architecture Description
1sar_viking_two_tower_recallTwo-Tower NN (Viking)Retrieval augmenté par la rechercheSearch-Augmented Retrieval
2v2q_two_tower_recallTwo-Tower NNMatching vidéo-vers-requêteVideo-to-Query matching
3bert_viking_two_hop_recallBERT + graphe 2-hopRecall sémantique profondDeep semantic recall
4search_result_darwin_recallDarwinRecall depuis vos recherches antérieuresRecall from your past searches
5shortterm_manual_attribute_recallRèglesRulesHashtags, sons, attributs manuelsHashtags, sounds, manual attributes
6video_generate_recallGénératifGenerativeBasee sur le contenu génèreBased on generated content
7video_top_counter_recallCompteursCountersPopularité (vues/likes)Popularity (views/likes)
8global_video_top_counter_recallChartsTop global
9tako_merge_feedbar_recallTako (IA)Fusion de tous les canauxMerges all channels

Il n'existe pas un classement unique mais cinq listes parallèles. L'écart entre la position serveur et la position finale mesure l'influence du reranking client - donnée critique pour le re-entraînement des modèles.

There isn't a single ranking but five parallel lists. The gap between server position and final position measures the influence of client reranking - critical data for model retraining.

ListeList Description
sort_gid_listOrdre trié serveurServer-sorted order
sati_gid_listOrdre integration pub (SATI)Ad integration order (SATI)
fyp_gid_listOrdre algorithme FYPFYP algorithm order
client_gid_listOrdre reranké on-deviceOn-device reranked order
final_gid_listOrdre final afficheFinal displayed order

Boucle de feedback

Feedback loop

12 scores de prédiction serveur sont envoyés avec chaque vidéo. Le client les compare au comportement réel et remonte 30+ signaux comportementaux par vidéo (durée, delta play, delta share). Batching toutes les 200 ms, seuil minimum 2 événements. Le système conserve les 1000 dernières interactions comme features pour les prédictions suivantes.

12 server prediction scores are sent with each video. The client compares them to actual behavior and reports back 30+ behavioral signals per video (duration, delta play, delta share). Batching every 200ms, minimum 2 events threshold. The system retains the last 1,000 interactions as features for subsequent predictions.

Les 9 raisons de recommandation ("Why This Video")The 9 recommendation reasons ("Why This Video")

Chaque vidéo du feed peut afficher une raison de recommandation visible par l'utilisateur. Ces 9 clés API, extraites du code source, révèlent les signaux que TikTok juge suffisamment "explicables" pour les montrer.

Each feed video can display a recommendation reason visible to the user. These 9 API keys, extracted from source code, reveal which signals TikTok considers "explainable" enough to show.

#Clé APIAPI keyTexte affichéDisplayed textSignal impliquéImplied signal
1abullet_1_liked_past_30_days"You liked similar posts"Historique likes 30j30-day like history
1bbullet_1_watched_past_30_days"You viewed similar posts"Watch time 30j30-day watch time
1cbullet_1_shared_past_30_days"You shared similar posts"Partages 30j30-day shares
1dbullet_1_past_30_days"You commented on similar posts"Commentaires 30j30-day comments
2bullet_2_country"This post is popular in your country"Geo-rankingGeo-ranking
3abullet_3_following"You are following %s"Graphe socialSocial graph
3bbullet_3_longvid"This video is longer, you seem to like longer videos"Préférence contentSizeTypecontentSizeType preference
4bullet_4_youknow"This post is from someone you may know"isFamiliar / graphe social étenduisFamiliar / extended social graph
5abullet_5_live"The creator is LIVE now"Insertion live SkylightSkylight live insertion
5bbullet_5_topic"You may be interested in this topic"Classification topicTopic classification
6bullet_6_boost"This post was given extra traffic to diversify content"Boost de diversificationDiversification boost
7bullet_7_profile"You have viewed this creator's profile and posts"Affinité créateurCreator affinity
8bullet_8_recently"This post was created recently"FraîcheurFreshness
9bullet_9_similar"You searched for similar posts"Historique de rechercheSearch history

Ce que ces raisons révèlent

What these reasons reveal

La raison #6 (bullet_6_boost) confirme l'existence d'un mécanisme de boost de diversification - TikTok injecte délibérément du contenu hors-bulle. La raison #3b (bullet_3_longvid) montre que le format (court vs long) est un signal de ranking distinct via contentSizeType.

Reason #6 (bullet_6_boost) confirms the existence of a diversification boost mechanism - TikTok deliberately injects out-of-bubble content. Reason #3b (bullet_3_longvid) shows that format (short vs long) is a distinct ranking signal via contentSizeType.

Le pipeline est en place. Plongeons dans le cœur du système : le modèle de scoring.

The pipeline is in place. Let's dive into the heart of the system: the scoring model.

2

Scoring, boosts et suppression

Scoring, boosts and suppression

19 predictions, une formule a exposants differencies, des boosts de createurs et des mecanismes de suppression invisibles

19 predictions, a formula with differentiated exponents, creator boosts and invisible suppression mechanisms

Cette section detaille le coeur du classement du feed : le modele multi-taches v1054 et sa formule de scoring, les 13 scores envoyes a votre telephone, les metriques de qualite technique analysees pour chaque video, et les mecanismes de boost et de suppression qui modifient la visibilite d'un contenu independamment de son score.

This section details the core of feed ranking: the multi-task model v1054 and its scoring formula, the 13 scores sent to your phone, the technical quality metrics analyzed for each video, and the boost and suppression mechanisms that alter a content's visibility independently of its score.

Modèle : tiktok_video_ctr_v1054_r1314188_0, type general_multitask, cluster oci_ies_search_mtdh_72.
Model: tiktok_video_ctr_v1054_r1314188_0, type general_multitask, cluster oci_ies_search_mtdh_72.
# Target Description
Engagement actif (gamma 0,84)Active engagement (gamma 0.84)
1predict_personalize_likeProbabilité de likeLike probability
2predict_personalize_shareProbabilité de partageShare probability
3predict_personalize_commentProbabilité de commentaireComment probability
4predict_personalize_followProbabilité de followFollow probability
5predict_personalize_favoriteProbabilité de favoriFavorite probability
6predict_personalize_click_personalClic sur le profil créateurCreator profile click
7predict_personalize_click_musicClic sur le son/musiqueSound/music click
8predict_post_commentPoster un commentairePost a comment
9predict_like_commentLiker un commentaireLike a comment
Engagement passif (gamma 1,08)Passive engagement (gamma 1.08)
10predict_personalize_p75Temps de visionnage au 75e percentileWatch time at 75th percentile
11predict_personalize_cdfDistribution cumulative du temps de visionnageWatch time cumulative distribution
12predict_personalize_cdf_inverseCDF inverse (queue de distribution)Inverse CDF (distribution tail)
13predict_comment_readLire les commentairesRead comments
Signaux de qualité / pénalitéQuality / penalty signals
14predict_ctrTaux de clicClick-through rate
15predict_sarTaux de scroll-away (pénalité)Scroll-away rate (penalty)
16predict_real_playLecture réelleReal play
17predict_reachProbabilité de reachReach probability
18predict_content_valueValeur intrinsèque du contenuIntrinsic content value
19predict_neg_actionAction négative (pas interesse, signaler)Negative action (not interested, report)
// Value Tree - Formule de scoring// Value Tree - Scoring formula
Score_video = f(
  predict_personalize_like      ^ 0.84,    // active engagement: diminishing returns
  predict_personalize_share     ^ 0.84,
  predict_personalize_comment   ^ 0.84,
  predict_personalize_follow    ^ 0.84,
  predict_personalize_p75      ^ 1.08,    // passive engagement: super-linear
  predict_personalize_cdf      ^ 1.08,
  predict_content_value        * 5,      // intrinsic content value x5
  predict_neg_action,                   // penalite// penalty
  predict_sar,                          // penalite scroll-away// scroll-away penalty
  predict_ctr,                          // taux de clic// click-through rate
  predict_real_play                     // lecture reelle// actual play
)
0,84
0.84
Engagement actif
Active engagement
Like, share, comment, follow. Rendements décroissants. Passer de 100 à 200 likes a moins d'impact que de 0 à 100.
Like, share, comment, follow. Diminishing returns. Going from 100 to 200 likes has less impact than 0 to 100.
1,08
1.08
Engagement passif
Passive engagement
Watch time, completion. Super-linéaire. Regarder 2x plus longtemps donne plus de 2x le score.
Watch time, completion. Super-linear. Watching 2x longer gives more than 2x the score.
x5
Valeur intrinsèque
Intrinsic value
content_value. Multiplicateur direct. Signal de qualité séparé de l'engagement. Son poids massif montre que TikTok ne reduit pas le ranking au seul engagement.
content_value. Direct multiplier. Quality signal separate from engagement. Its massive weight shows TikTok doesn't reduce ranking to engagement alone.

La retention bat les likes

Retention beats likes

C'est un choix architectural delibere : gamma 1,08 sur le temps de visionnage vs 0,84 sur les likes. TikTok veut des videos que les gens regardent, pas des videos qui font cliquer.

This is a deliberate architectural choice: gamma 1.08 on watch time vs 0.84 on likes. TikTok wants videos people watch, not videos that generate clicks.

Les 13 scores rec_* transmis au client (le téléphone)The 13 rec_* scores sent to the client (the phone)

Avant même que vous ne voyiez une vidéo, les serveurs de TikTok ont déjà calculé 13 prédictions sur votre comportement face à elle : allez-vous la liker ? La partager ? La skipper ? Combien de temps allez-vous la regarder ? Ces prédictions, produites par des modèles de machine learning, sont envoyées à votre téléphone avec chaque vidéo du feed.

Before you even see a video, TikTok's servers have already calculated 13 predictions about your behavior: will you like it? Share it? Skip it? How long will you watch? These predictions, produced by machine learning models, are sent to your phone with each video in the feed.

rec_like_model_score Probabilite de like
rec_follow Probabilite de follow
rec_share Probabilite de partage
rec_comment Probabilite de commentaire
rec_click_comment_model_score Ouverture commentaires
rec_dislike Probabilite de "pas interesse"
rec_finish Regarder jusqu'au bout
rec_skip Probabilite de skip
rec_staytime Temps de visionnage predit
rec_publish Probabilite de repost
rec_publish_score Score normalise de publication
rec_head Replay depuis le debut
rec_cover Clic sur la miniature
rec_like_model_score Like probability
rec_follow Follow probability
rec_share Share probability
rec_comment Comment probability
rec_click_comment_model_score Open comments
rec_dislike "Not interested" probability
rec_finish Watch-to-end probability
rec_skip Skip probability
rec_staytime Predicted watch time
rec_publish Repost probability
rec_publish_score Normalized publish score
rec_head Replay from start
rec_cover Thumbnail click

Role de ces scores : ce ne sont pas le classement final. Ce sont les entrées du modèle ByteNN on-device (comment_ml_v3). Le serveur envoie ses prédictions brutes au téléphone pour que celui-ci fasse une inférence locale supplémentaire en les combinant avec des signaux temps réel (batterie, CPU, vitesse réseau, historique de session).

Role of these scores: these are not the final ranking. They are the inputs to the on-device ByteNN model (comment_ml_v3). The server sends its raw predictions to the phone so it can run additional local inference by combining these scores with real-time signals (battery, CPU, network speed, session history).

Ouvrir les commentaires et visiter le profil = signaux forts

Opening comments and visiting a profile = strong signals

TikTok predit 13 comportements differents pour chaque video. Ces predictions sont combinees avec l'etat de votre telephone (batterie, CPU, reseau) pour des decisions en temps reel. Un contenu qui genere des ouvertures de commentaires et des visites de profil envoie des signaux forts au pipeline ML.

TikTok predicts 13 different behaviors for each video. These predictions are combined with your phone's state (battery, CPU, network) for real-time decisions. Content that generates comment opens and profile visits sends strong signals to the ML pipeline.

Métriques supplémentaires par vidéoAdditional metrics per video

ChampField Description ExempleExample
VQScoreScore de qualité technique de la vidéo (float)Technical video quality score (float)55.98 - 74.62
vod_sr_class_v30_scoreClassification Super Resolution : UGC (27) < Semi-pro (40) < Pro (63)Super Resolution classification: UGC (27) < Semi-pro (40) < Pro (63)27.29 - 62.49
LoudnessVolume audio moyen (dB)Average audio loudness (dB)-24.7 - -15.6 dB
MusicRatioRatio musique - analyse audio automatique (AED)Music ratio - automatic audio analysis (AED)~0.93
SpeechRatioRatio parole (AED)Speech ratio (AED)~0.73
SingingRatioRatio chant (AED)Singing ratio (AED)~0.10
BrightnessLuminosité moyenne de la vidéoAverage video brightness~41.54
aigcLabelTypeDétection IA : 0 = non déterminé, 1 = auto-déclaré, 2 = détecté automatiquementAI detection: 0 = undetermined, 1 = self-declared, 2 = automatically detected0 / 1 / 2
play_time_prob_distDistribution de probabilité du temps de lecture : [seuil_ms, probabilité, duree_attendue_ms]Play time probability distribution: [threshold_ms, probability, expected_duration_ms][800, 0.607, 3159.6]

Boosts, suppression et niveaux createurBoosts, suppression and creator levels

Au-dela du score algorithmique, le serveur peut modifier directement la visibilite d'une video via des mecanismes de boost ou de suppression. Ces drapeaux, extraits des metadonnees de chaque video, agissent comme des interrupteurs qui court-circuitent le ranking normal.

Beyond the algorithmic score, the server can directly alter a video's visibility through boost or suppression mechanisms. These flags, extracted from each video's metadata, act as switches that bypass normal ranking.

Boost
boost_tag_info

Boost par tag

Tag boost

Le serveur peut taguer une video pour la booster. Le code precise "algorithmique/manuel".

The server can tag a video to boost it. The code specifies "algorithmic/manual".

Boost
operator_boost_info

Operateur telecom

Telecom operator

Des partenaires telecom peuvent influencer la distribution de contenu.

Telecom partners can influence content distribution.

Boost
poi_boost

Proximite geographique

Geographic proximity

Contenu pousse en fonction de la localisation.

Content pushed based on location.

Boost
intervention_info

Intervention editoriale

Editorial intervention

Intervention non-algorithmique dans l'ordonnancement du feed.

Non-algorithmic intervention in feed ordering.

SuppressionSuppression
is_nff_or_nr

Not For Feed / Not Recommended

Exclut la video du feed. Suppression de distribution, pas de suppression du contenu.

Excludes the video from feed. Distribution suppression, not content deletion.

Shadow ban
self_see / is_prohibited

Visibilite restreinte

Restricted visibility

Seul l'auteur voit sa video, ou la video est interdite. Le mecanisme le plus proche du "shadow ban".

Only the author sees their video, or video is prohibited. The closest mechanism to "shadow ban".

Niveaux de boost createur (user_plus) Creator boost levels (user_plus)

ChampField MultiplicateurMultiplier Description
user_plus_l0_boost4.40xLevel 0 - nouveau createurLevel 0 - new creator
user_plus_l1_boost5.02xLevel 1 - verifie (boost le plus eleve)Level 1 - verified (highest boost)
user_plus_l2_boost1.44xLevel 2 - starLevel 2 - star

Les niveaux sont inverses par rapport a l'intuition : les createurs verifies (L1) recoivent un boost 3,5x superieur aux stars (L2). L'algorithme recompense la verification plus que la celebrite.

Levels are inverted from intuition: verified creators (L1) receive a 3.5x higher boost than stars (L2). The algorithm rewards verification more than celebrity.

Classification et diversification du contenuContent classification and diversification

Chaque video TikTok est classee dans l'une des 21 macro-categories (CategoryType, CT 100-120). En parallele, les champs diversificationId et diversificationLabels decoupent chaque categorie en sous-groupes pour casser les bulles de filtre : l'algorithme empeche deux videos du meme sous-bucket d'apparaitre a la suite. Ces taxonomies sont utilisees aussi bien dans le feed que dans le search. Ces donnees sont directement visibles en clair dans le code source de n'importe quelle video sur tiktok.com.

Every TikTok video is classified into one of 21 macro-categories (CategoryType, CT 100-120). In parallel, the diversificationId and diversificationLabels fields split each category into sub-groups to break filter bubbles: the algorithm prevents two videos from the same sub-bucket from appearing consecutively. These taxonomies are used in both the feed and search. This data is directly visible in plain text in the source code of any video on tiktok.com.

// tiktok.com/@taylorswift/video/7029671109926784302
{
  "CategoryType": 101,
  "diversificationId": 10088,
  "diversificationLabels": [
    "Celebrity Clips & Variety Show",
    "Entertainment Culture",
    "Entertainment"
  ]
}
CTLabelLabel
100Anime et comicsAnime & Comics
101SpectaclesShows
102Beaute et soinsBeauty Care
103JeuxGames
104HumourComedy
105Vie quotidienneDaily Life
106FamilleFamily
107RelationRelationship
108DrameDrama
109TenueOutfit
110PlaybackLipsync
CTLabelLabel
111CuisineFood
112SportSports
113AnimauxAnimals
114SocieteSociety
115VoituresCars
116EducationEducation
117Fitness et santeFitness & Health
118TechnologiesTechnology
119Chant et danseSinging & Dancing
120TousAll

Le feed a son propre pipeline. Mais TikTok a aussi construit un vrai moteur de recherche, avec ses propres regles.

The feed has its own pipeline. But TikTok has also built a real search engine, with its own rules.

Acte IIAct II

La recherche TikTok

TikTok search

Un moteur de recherche autonome avec son propre ranking

A standalone search engine with its own ranking

TikTok Search
3

Le pipeline de recherche, 4 étapes serveur + 2 couches client

The search pipeline, 4 server steps + 2 client layers

Un pipeline autonome avec ses propres modeles, distinct du feed

A standalone pipeline with its own models, distinct from the feed

Quand vous tapez une recherche sur TikTok, vous ne cherchez pas dans le meme systeme que votre feed For You. TikTok a construit un moteur de recherche entierement separe, avec ses propres modeles de ranking (dont un modele dedie au resultat n-1), son propre systeme de recall (16 sources), et meme son propre LLM de pertinence deploye en decembre 2025. Le seul lien entre les deux : vos 1 000 dernieres interactions feed sont envoyees comme features au modele search - et inversement, les videos decouvertes en recherche peuvent remonter dans votre feed.
When you type a search on TikTok, you're not searching the same system as your For You feed. TikTok has built an entirely separate search engine, with its own ranking models (including a dedicated model for the #1 result), its own recall system (16 sources), and even its own relevance LLM deployed in December 2025. The only link between the two: your last 1,000 feed interactions are sent as features to the search model - and conversely, videos discovered through search can surface in your feed.
SEARCH SERVER

1. Recall (multi-source retrieval)

SDR cross-modal (seuil 0,3), SDR personnalise (seuil 0,85), U2I e-com, tags, Viking

SDR cross-modal (threshold 0.3), personalized SDR (threshold 0.85), U2I e-com, tags, Viking

5 familles de systemes5 system families

2. Raw rank

ANSA ban, risk query ban, CTCVR e-com, coldstart uplift v2

ANSA ban, risk query ban, e-com CTCVR, coldstart uplift v2

FiltrageFiltering

3. Fine rank

Video v1054 (19 targets) + User v250 (16 targets) + POI v15 (5 targets) + E-com v1284 (21 targets) + LLM relevance

Video v1054 (19 targets) + User v250 (16 targets) + POI v15 (5 targets) + E-com v1284 (21 targets) + LLM relevance

4 modeles + 1 LLM4 models + 1 LLM

4. Rerank serveur

Beam search diversity (beta=0,02), MixRank 5 canaux, post-intent, gouvernance (-1M)

Beam search diversity (beta=0.02), MixRank 5 channels, post-intent, governance (-1M)

5 canaux5 channels

CLIENT SEARCH

5. SearchInflowReRank

8 poids d'engagement (play time, likes, shares, comments, etc.)

8 engagement weights (play time, likes, shares, comments, etc.)

8 signaux8 signals

6. Pitaya (ML on-device)

Modèles ML on-device pour le search

On-device ML models for search

ML local

Les 8 signaux du SearchInflowReRankThe 8 SearchInflowReRank signals

Le reranking client du search pondère les résultats selon 8 signaux d'engagement. Chaque signal correspond a un champ API avec un poids configurable.

The client-side search reranking weighs results using 8 engagement signals. Each signal maps to an API field with a configurable weight.

#SignalChamp APIAPI fieldDescription
1Watch Timeplay_time_weightDurée de lecturePlay duration
2Likeslike_weightNombre de likesNumber of likes
3Sharesshare_weightNombre de partagesNumber of shares
4Favoritesfavourite_weightNombre de favorisNumber of favorites
5Commentscomment_weightNombre de commentairesNumber of comments
6Profile Visitsenter_user_weightSwipe vers le profil créateurSwipe to creator profile
7Music Clicksenter_music_weightClics vers la page audioClicks to audio page
8Completionfinish_weightVidéo regardée jusqu'au boutVideo watched to completion

Le modèle utilisateur search (16 targets)The search user model (16 targets)

En plus du modèle vidéo, TikTok utilise un modèle utilisateur dédié pour le search. Ce modèle prédit 16 comportements différents pour chaque résultat de recherche, spécifiques à votre profil : allez-vous cliquer, lire, suivre, signaler ?

On top of the video model, TikTok uses a dedicated user model for search. This model predicts 16 different behaviors for each search result, specific to your profile: will you click, read, follow, report?

Modèle : mt_user_ctr_v250_r1313345_0
Model: mt_user_ctr_v250_r1313345_0
#TargetDescription
1predict_video_playLecture vidéoVideo play
2predict_clickClicClick
3pred_staytimeTemps de consultationBrowse time
4predict_real_playLecture réelleReal play
5predict_finishComplétionCompletion
6predict_likeLike
7predict_sharePartageShare
8predict_commentCommentaireComment
9predict_click_personalClic profilProfile click
10predict_click_musicClic musiqueMusic click
11predict_favouriteFavoriFavorite
12predict_followFollow
13predict_staytimeTemps de consultationBrowse time
14predict_dislikeDislike
15predict_reportSignalementReport
16predict_user_click_concentrationConcentration de clics utilisateurUser click concentration

Le modèle Top-1

The Top-1 model

Un modèle dédié, tiktok_top_1_ctr_v9, évalue exclusivement le premier résultat de recherche. Parmi ses targets : predict_changeq, la probabilité que l'utilisateur change de requête. TikTok optimise pour que le premier résultat soit assez bon pour que vous ne cherchiez pas autre chose.

A dedicated model, tiktok_top_1_ctr_v9, evaluates exclusively the first search result. Among its targets: predict_changeq, the probability that the user changes their query. TikTok optimizes so the first result is good enough that you don't search for something else.

Seuils de pertinenceRelevance thresholds

Pour qu'un résultat apparaisse, il doit dépasser des seuils de corrélation sémantique stricts. Les résultats personnalisés exigent un score presque 3 fois plus élevé que les résultats généraux.

For a result to appear, it must exceed strict semantic correlation thresholds. Personalized results require a score nearly 3 times higher than general results.

ParamètreParameterValeurValueDescription
SDR général0.3Corrélation sémantique minimaleMinimum semantic correlation
SDR personnalisé0.85Presque 3x plus strict que le généralNearly 3x stricter than general
ies_drop_low_user_rel0.003152Seuil min de pertinence utilisateurMin user relevance threshold
ies_ltr_no_top1_rel0.818866Seuil LTR pour non-Top1LTR threshold for non-Top1
0,02
0.02
Pénalité de répétition
Repetition penalty
2% de pénalité par item similaire dans le beam search
2% penalty per similar item in beam search
[1, 0.4, 0.1]
Discount par position
Position discount
1er résultat = 100%, 2e = 40%, 3e = 10%. La diversité est enforced.
1st result = 100%, 2nd = 40%, 3rd = 10%. Diversity is enforced.

Les 1000 dernières interactions feed sont envoyées comme features au modèle de search (mt_video_enable_feed_seq_full_life_dump = true, count = 1000). Réciproquement, le système search_result_darwin_recall injecte des vidéos dans le FYP basees sur vos recherches. Les deux surfaces partagent vos données comportementales.

The last 1,000 feed interactions are sent as features to the search model (mt_video_enable_feed_seq_full_life_dump = true, count = 1000). Conversely, search_result_darwin_recall injects videos into the FYP based on your searches. Both surfaces share your behavioral data.

Le search a ses propres règles. Découvrons ses couches de suggestions et son Knowledge Graph.

Search has its own rules. Let's discover its suggestion layers and Knowledge Graph.

4

Suggestions, Knowledge Graph et classifier de requetes

Suggestions, Knowledge Graph and query classifier

Avant meme que vous ne tapiez un caractere, votre telephone a deja recu plus de 800 suggestions pre-calculees - incluant les tendances du moment - pour un affichage instantane. A chaque frappe, 16 sources serveur completent ces suggestions en temps reel. Cote comprehension de la requete, TikTok s'appuie sur un Knowledge Graph (alimente par 4 sources externes : Wikipedia, IMDb, catalogues gaming et musique - bien moins avance que celui de Google) et sur Textnet, un classifier qui categorise votre requete parmi 30+ intentions avant meme que les resultats ne soient charges. Deux tiers des suggestions pre-cachees portent un intent e-commerce non nul : le search est aussi un entonnoir commercial.

Before you even type a character, your phone has already received over 800 pre-computed suggestions - including current trends - for instant display. With each keystroke, 16 server sources supplement these suggestions in real time. For query understanding, TikTok relies on a Knowledge Graph (powered by 4 external sources: Wikipedia, IMDb, gaming catalogs and music - far less advanced than Google's) and on Textnet, a classifier that categorizes your query across 30+ intents before results are even loaded. Two thirds of pre-cached suggestions carry non-zero e-commerce intent: search is also a commercial funnel.

Cache local

Local cache

806 suggestions pré-chargées, source darwin_active_search_click_24h_recall, 42 langues, 62.9% anglais. Fichier binaire local.

806 pre-loaded suggestions, source darwin_active_search_click_24h_recall, 42 languages, 62.9% English. Local binary file.

Serveur incrémental

Incremental server

16 sources en temps réel à chaque frappe, scoring via predict_ctr_score.

16 real-time sources on each keystroke, scored via predict_ctr_score.

Post-clic (SAS)

Search After Search : suggestions post-résultat pour enchainer les recherches.

Search After Search: post-result suggestions to chain searches.

Les 16 sources de retrievalThe 16 retrieval sources

Quand vous tapez une recherche, TikTok ne se contente pas de chercher dans un index. 16 systèmes différents sont interrogés simultanément - du cache local aux modèles sémantiques multilingues (XLM-R), en passant par le Knowledge Graph et le catalogue produits. Ces 16 sources sont réparties en 6 familles.

When you type a search, TikTok doesn't just look through an index. 16 different systems are queried simultaneously - from the local cache to multilingual semantic models (XLM-R), through the Knowledge Graph and product catalog. These 16 sources are organized into 6 families.

SourceFamilleFamilyDescription
orion_realtime_recallOrionRecall temps réelReal-time recall
orion_rewrite_recallOrionCorrection orthographiqueSpell correction
orion_experience_recallOrionBasee sur l'expérience utilisateurBased on user experience
darwin_active_search_click_24hDarwinClics de recherche 24h (cache)Search clicks 24h (cache)
darwin_active_search_click_7dDarwinClics de recherche 7 joursSearch clicks 7 days
darwin_global_recallDarwinRecall global
darwin_experience_recallDarwinRecall expérienceExperience recall
viking_xlmr_recallSémantiqueSemanticXLM-R (BERT multilingue) via VikingXLM-R (multilingual BERT) via Viking
awesome_sug_recallSémantiqueSemanticSuggestions sémantiques avancéesAdvanced semantic suggestions
qse_recallSémantiqueSemanticQuery Suggestion Engine
session_recallContexteContextSession couranteCurrent session
history_recallContexteContextHistorique de rechercheSearch history
trending_recallContexteContextTendancesTrends
entity_recallEntiteEntityKnowledge Graph (NER)
product_recallE-commerceCatalogue produitsProduct catalog
origin_query_recallQueryRequête originaleOriginal query
47,1%
47.1%
Intent fort (ecom_intent=2)
Strong intent (ecom_intent=2)
Près de la moitié des suggestions cachées ont une forte intention commerciale
Nearly half of cached suggestions have strong commercial intent
19,2%
19.2%
Intent moyen (ecom_intent=1)
Medium intent (ecom_intent=1)
Intention commerciale moyenne
Medium commercial intent
33,6%
33.6%
Pas d'intent (ecom_intent=0)
No intent (ecom_intent=0)
Un tiers seulement sans intention commerciale
Only a third with no commercial intent

2/3 des suggestions pré-cachées ont un intent e-commerce non nul. TikTok a transformé son moteur de recherche en entonnoir commercial.

2/3 of pre-cached suggestions have non-zero e-commerce intent. TikTok has transformed its search engine into a commercial funnel.

Knowledge Graph

TikTok intégré un Knowledge Graph dans son moteur de recherche, alimenté par 4 sources de données externes. Il affiche des Entity Cards structurées dans les résultats, comparables aux Knowledge Panels de Google. L'entité s'active dès 3 caractères tapés et s'affiche toujours en position 0.

TikTok has a built-in Knowledge Graph integrated into its search engine, powered by 4 external data sources. It displays structured Entity Cards in search results, similar to Google's Knowledge Panels. The entity activates after just 3 characters typed and is always displayed at position 0.

titleStyleTypeSource
2WIKIWikipedia
3IMDBIMDb (films/series/acteurs)IMDb (movies/series/actors)
4GAMECatalogues gaming partenairesPartner gaming catalogs
6MUSICCatalogue musical TikTok interneTikTok internal music catalog

Deux niveaux de confiance : Strong Entity Card (carte complète avec images et métriques) vs Weak Entity (abstract uniquement). L'entity_recall s'active dès 3 caractères tapés et l'entité est toujours affichée en position 0 quand présente.

Two confidence levels: Strong Entity Card (full card with images and metrics) vs Weak Entity (abstract only). entity_recall activates after just 3 characters typed, and the entity is always displayed at position 0 when present.

Textnet : le classifier de requetesTextnet: the query classifier

Textnet (format XXXX##YYY) classe chaque requete de recherche dans 30+ categories d'intention (codes 1001-1035+) avant meme que les resultats ne soient charges. C'est le premier filtre : il determine si votre recherche est informationnelle, commerciale ou de divertissement, et oriente le pipeline de ranking en consequence.

Textnet (format XXXX##YYY) classifies each search query into 30+ intent categories (codes 1001-1035+) before results are even loaded. It's the first filter: it determines whether your search is informational, commercial or entertainment-oriented, and steers the ranking pipeline accordingly.

TikTok est un vrai moteur de recherche

TikTok is a full-fledged search engine

Optimisez vos textes, hashtags et descriptions comme du SEO. Les suggestions sont générées par 6 familles de sources (16 au total), incluant une compréhension sémantique multilingue et un Knowledge Graph. Le scoring d'intention commerciale montre que TikTok évalue le potentiel transactionnel de chaque requête.

Optimize your texts, hashtags and descriptions like SEO. Suggestions are generated from 6 source families (16 total), including multilingual semantic understanding and an entity Knowledge Graph. Commercial intent scoring shows TikTok evaluates the transactional potential of each query.

Le search cible vos intentions. La publicité, elle, cible votre attention - et avec une précision chirurgicale.

Search targets your intentions. Advertising targets your attention - with surgical precision.

Acte IIIAct III

La publicité

Advertising

Comment TikTok décide quelles pubs vous montrer, et quand

How TikTok decides which ads to show you, and when

TikTok Ads
5

Trois systèmes publicitaires imbriqués

Three interlocking advertising systems

SATI (serveur, 278 paramètres) + Pitaya (on-device ML) + Transport (28 champs)

SATI (server, 278 parameters) + Pitaya (on-device ML) + Transport (28 fields)

La publicité sur TikTok repose sur trois systèmes imbriqués. Côté serveur, SATI décide quelles pubs sont éligibles et à quel prix minimum. Côté téléphone, Pitaya repositionne les pubs dans votre feed en temps réel grâce à du machine learning local. Et entre les deux, un protocole de transport classifie chaque pub en 28 champs - incluant des formats invisibles comme les ghost ads et les dark posts.

TikTok advertising relies on three interlocking systems. Server-side, SATI decides which ads are eligible and at what minimum price. On your phone, Pitaya repositions ads in your feed in real time using local machine learning. And between the two, a transport protocol classifies each ad across 28 fields - including invisible formats like ghost ads and dark posts.

SATI

Search Ads Technology Infrastructure (serveur). 278 paramètres de configuration, seuil eCPM minimum, formule quadratique de placement.

Search Ads Technology Infrastructure (server). 278 configuration parameters, minimum eCPM threshold, quadratic placement formula.

Pitaya Ad Reranking

ML on-device. Pipeline tiktok_showtime_ad_gap, package daogua, fonction adjust_items.

On-device ML. Pipeline tiktok_showtime_ad_gap, package daogua, function adjust_items.

Transport publicitaire

Ad transport

28 champs de métadonnées publicitaires, ghost ads, pseudo-ads, dark posts.

28 ad metadata fields, ghost ads, pseudo-ads, dark posts.

Glossaire publicitaireAd glossary

CTR (Click-Through Rate) - Taux de clicClick-through rate
CVR (Conversion Rate) - Taux de conversionConversion rate
CTCVR (Click-Through Conversion Rate) - Produit du CTR et du CVR : probabilite de voir, cliquer ET acheterProduct of CTR and CVR: probability of seeing, clicking AND buying
GMV (Gross Merchandise Value) - Valeur brute des marchandises venduesTotal value of merchandise sold
eCPM (Effective Cost Per Mille) - Cout effectif pour 1 000 impressionsEffective cost per 1,000 impressions

Reranking publicitaire on-device (Pitaya)On-device ad reranking (Pitaya)

Une fois les publicités chargées par le serveur, le framework Pitaya sur votre téléphone peut les déplacer dans le feed - c'est-a-dire changer leur position parmi les vidéos organiques. Voici les règles qui gouvernent ces déplacements :

Once ads are loaded from the server, the Pitaya framework on your phone can move them within the feed - that is, change their position among organic videos. Here are the rules governing these displacements:

RègleRuleValeurValueImpact
enable_move_uptrueLes pubs PEUVENT être remontées dans le feedAds CAN be moved up in the feed
enable_move_downfalseLes pubs ne sont PAS descenduesAds are NOT moved down
enable_brand_ad_movetrueLes pubs de marque sont déplaçablesBrand ads can be moved
enable_dislike_ad_deletetrue"Pas interesse" supprime la pub"Not interested" removes the ad

Les pubs sont remontées mais jamais descendues

Ads are moved up but never down

L'algorithme on-device peut déplacer une pub plus haut dans votre feed pour la montrer plus tôt, mais jamais la retarder. Le système est biaisé en faveur des annonceurs.

The on-device algorithm can move an ad higher in your feed to show it sooner, but never delay it. The system is biased in favor of advertisers.

Les 10 signaux d'engagement de PitayaPitaya's 10 engagement signals

Le sous-systeme de scoring de Pitaya pondere toutes les actions explicites a 0,25, et le watch time 2,5x moins (0,10). Ces poids determinent comment le framework on-device reordonne les contenus - y compris le placement des pubs.

Pitaya's scoring subsystem weights all explicit actions at 0.25, and watch time 2.5x less (0.10). These weights determine how the on-device framework reorders content - including ad placement.

Like
0.25
Partage vidéo
Video share
0.25
Favori / Bookmark
0.25
Follow
0.25
Commentaire poste
Comment posted
0.25
Visite profil créateur
Creator profile visit
0.25
Clic bouton commentaire
Comment button click
0.25
Loop (rewatch)
0.25
Temps de lecture (play_time)
Watch time (play_time)
0.10
Un loop complet (oneLoop)
One complete loop
0.10

Myth busted

Le partage n'est PAS le graal. Il pèse exactement le même poids qu'un like, un bookmark ou un follow dans ce sous-système.

Share is NOT the holy grail. It weighs exactly the same as a like, a bookmark, or a follow in this subsystem.

Portee de ces poids : ces poids proviennent de la couche de reranking on-device (framework Pitaya), pas du modèle serveur principal du For You Page.

Scope of these weights: these weights come from the on-device reranking layer (Pitaya framework), not the main server-side For You Page model.

L'architecture est en place. Voyons les chiffres concrets.

The architecture is in place. Let's look at the concrete numbers.

6

Les chiffres de la pub - seuils eCPM, espacement et formats furtifs

Ad numbers - eCPM thresholds, spacing and stealth formats

Plus une pub est haut dans le feed, plus le seuil de revenu exigé est élevé - et certains formats publicitaires sont invisibles à l'oeil nu

The higher an ad sits in the feed, the higher the revenue threshold required - and some ad formats are invisible to the naked eye

PositionValeur interneInternal valueEstimation USDEstimated USDDescription
Position 0 (top)Position 0 (top)400,000~$4.00 eCPMPremium première positionPremium first position
Positions 1-3300,000~$3.00 eCPMPositions hautesHigh positions
Default (4-12)Default (4-12)220,000~$2.20 eCPMSeuil minimum standardStandard minimum threshold
Inner flow110,000~$1.10 eCPMInventaire secondaireSecondary inventory
Plancher absoluAbsolute floor5,000~$0.05 eCPMAucune pub en dessousNo ads below this
Shop search pos 05,000,000~$50.00 eCPM1ère position e-commerce1st e-commerce position

Les valeurs eCPM internes sont exprimees en micro-cents (1 unite = $0,00001). Estimation deduite de la formule ecpm_score et validee par coherence avec les eCPM de marche US.

Internal eCPM values are expressed in micro-cents (1 unit = $0.00001). Estimate derived from the ecpm_score formula and validated against US market eCPMs.

// Seuil eCPM par position// eCPM threshold by position
threshold(x) = 250,000 * x^2 - 1,125,000 * x + 880,000

x est un index de position normalisé (0 = début du feed, ~1 = milieu). À x=0, le seuil est de 880 000 (~$8.80 eCPM). À x=1, il chute a 5 000 (~$0.05). En clair : seules les pubs les plus lucratives ont le droit d'apparaître en haut du feed.

x is a normalized position index (0 = start of feed, ~1 = middle). At x=0, the threshold is 880,000 (~$8.80 eCPM). At x=1, it drops to 5,000 (~$0.05). Simply put: only the most lucrative ads are allowed to appear at the top of the feed.

Gate ROI : combine_ad_ecpm

ROI Gate: combine_ad_ecpm

Avant d'appliquer le score eCPM, TikTok vérifie que la pub a un retour sur investissement suffisant. Si le flag enable_roi2 est actif, la pub doit dépasser deux seuils simultanés (CVR et valeur estimée) pour que son score eCPM soit pris en compte. Sinon, le multiplicateur tombe a 1 - la pub perd tout avantage de positionnement.

Before applying the eCPM score, TikTok checks that the ad has sufficient return on investment. If the enable_roi2 flag is active, the ad must exceed two simultaneous thresholds (CVR and estimated value) for its eCPM score to be applied. Otherwise, the multiplier falls to 1 - the ad loses all positioning advantage.

// combine_ad_ecpm
IF3(enable_roi2,
  IF3(cvr_score * roi2_item_price * 1000 > 3
    AND cvr_score > 0.0004,
    (ad_ecpm_bias + ad_ecpm_beta * ad_ecpm_score) ^ ad_ecpm_alpha,
    1),
  1)

Deux conditions doivent etre remplies : cvr_score * roi2_item_price * 1000 > 3 (la valeur estimée de la conversion dépasse un seuil) et cvr_score > 0.0004 (le taux de conversion est suffisant). Si l'une échoue, le multiplicateur eCPM est neutralisé a 1.

Two conditions must be met: cvr_score * roi2_item_price * 1000 > 3 (estimated conversion value exceeds a threshold) and cvr_score > 0.0004 (conversion rate is sufficient). If either fails, the eCPM multiplier is neutralized to 1.

Espacement entre deux publicitesSpacing between two ads

ContexteContextGap minimumMinimum gapNote
Mobile1 videorerank_min_ad_gap: 1
Web3 videosframework_min_ad_gap: 3
Inner flow5 positionsStandard
eCPM top 40%3 positionsGap reduitReduced gap
eCPM top 10%6 positionsEspacement de 6 positions entre ads premium (protection anti-cannibalisation entre ads, pas un recul dans le feed)6-position spacing between premium ads (anti-cannibalization between ads, not a demotion in the feed)
15s
Seuil fast scroller
Fast scroller threshold
Temps moyen par vidéo. En dessous, l'utilisateur est classé "fast scroller" et l'espacement des pubs est réduit à 3 items
Average time per video. Below this, the user is classified as a "fast scroller" and ad spacing is reduced to 3 items
0,9
0.9
Score de pertinence requis
Required relevance score
Pour les positions 0-1
For positions 0-1

Formats publicitaires invisiblesStealth ad formats

Ghost Ads

Visibles uniquement pour certains utilisateurs ciblés, invisibles pour les autres. Impossible à detecter sans interception réseau.

Visible only to certain targeted users, invisible to others. Impossible to detect without network interception.

is_ghost_ads

Dark Posts

Posts non-publics utilisés pour le ciblage, absents du profil créateur. N'apparaissent pas dans la grille de vidéos du compte.

Non-public posts used for targeting, absent from creator profile. Don't appear in the account's video grid.

dark_post_source

Pseudo-Ads

Contenu organique avec insertion pub native, indistinguable du contenu normal dans le feed.

Organic content with native ad insertion, indistinguishable from normal content in the feed.

is_pseudo_ad

Mid-Roll

Insertion publicitaire mid-feed activée en production (enable_mid_roll: true).

Mid-feed ad insertion enabled in production (enable_mid_roll: true).

enable_mid_roll

Spark Ads (isSoftAd)

Contenu organique amplifié. Triple classification client : isAd (pub classique), isSoftAd (Spark Ads), hasAd (indicateur de présence).

Amplified organic content. Triple client classification: isAd (classic ad), isSoftAd (Spark Ads), hasAd (presence indicator).

is_spark_plus

Ciblage publicitaire

Ad targeting

Dans notre test sur émulateur Android (compte neuf, zéro vidéo visionnée), le ciblage publicitaire inférait une tranche d'âge de 45-55 ans. Types de critères observés : age, localisation, appareil/OS, activité on et off-TikTok.

In our test on an Android emulator (new account, zero videos watched), ad targeting inferred an age range of 45-55. Observed criteria types: age, location, device/OS, activity on and off TikTok.

L'inférence d'âge sur un compte neuf sans aucune interaction suggère l'utilisation de sources de données externes (empreinte appareil, géolocalisation IP, et potentiellement des partenariats de données tierces). TikTok cible avant même que vous n'ayez interagi.

Age inference on a new account without any interaction suggests the use of external data sources (device fingerprint, IP geolocation, and potentially third-party data partnerships). TikTok targets before you've even interacted.

La pub finance la plateforme. Mais TikTok construit aussi un système e-commerce complet avec ses propres règles de jeu.

Ads fund the platform. But TikTok is also building a complete e-commerce system with its own rules.

Acte IVAct IV

Le commerce

Commerce

Un système de ranking e-commerce où le taux de clic est élevé à la puissance 4

An e-commerce ranking system where click rate is raised to the power of 4

TikTok Shop
7

Le pipeline e-commerce en 7 étapes et la formule de scoring

The 7-step e-commerce pipeline and scoring formula

9 modèles ML dédiés, des coefficients astronomiques, une hiérarchie de signaux radicale

9 dedicated ML models, astronomical coefficients, a radical signal hierarchy

Le système e-commerce de TikTok (TikTok Shop) a son propre pipeline de ranking en 7 étapes, du tri grossier initial jusqu'à la position finale hybride. 9 modèles ML dédiés évaluent chaque produit. Les coefficients utilisés sont astronomiques : le CTR est multiplié par 2 000 puis élevé à la puissance 4, le CVR est multiplié par 46 351 puis élevé au carré. Voici les étapes du pipeline :

TikTok's e-commerce system (TikTok Shop) has its own 7-step ranking pipeline, from initial rough sorting to the final hybrid position. 9 dedicated ML models evaluate each product. The coefficients used are astronomical: CTR is multiplied by 2,000 then raised to the power of 4, CVR is multiplied by 46,351 then squared. Here are the pipeline steps:

1

roughsort_index

Tri grossier

Rough sorting

2

predict_index

Scoring ML

ML scoring

3

before_diversify

Pre-diversification

Pre-diversification

4

diversify_index

Diversification

5

after_rulerank

Règles business

Business rules

6

product_index

Position produit

Product position

7

hybrid_index

Position finale

Final position

Les 9 modèles ML e-commerceThe 9 e-commerce ML models

Chaque produit dans TikTok Shop est évalue par 9 modèles de machine learning spécialisés : prédiction de conversion (CVR), valeur des ventes (GMV), matching visuel, recherche par photo, et même un modèle dédié au cold start des nouveaux produits.

Each product in TikTok Shop is evaluated by 9 specialized machine learning models: conversion prediction (CVR), sales value (GMV), visual matching, photo search, and even a dedicated model for cold-starting new products.

ModèleModelTypeTargets
tiktok_search_ecom_us_v1284CVR (21 targets)Video CVR + Card CVR + Live CVR
tiktok_search_ecom_us_v1303GMV (7 targets)pred_buy, pred_cart, pred_multi_order, pred_gmv
tiktok_mall_rerankRerankScore unique de rerankingSingle reranking score
tiktok_us_ecom_search_rawrank_ctcvrCTCVRCTR x CVR
tiktok_ecom_search_coldstart_uplift_v2UpliftBoost produits sans historiqueBoost for products without history
tiktok_photo_search_us_v7Photo searchpred_buy_cvr, pred_cart_cvr, pred_multi_order
tiktok_us_search_ecom_u2i_retrievalU2IUser-to-Item avec tenseurs sparsesUser-to-Item with sparse tensors
tiktok_search_ecom_us_v1170UFS RecallRecall e-com généralisteGeneral e-com recall
dino_ecom_without_text_0.4Détection objetsObject detectionMatching visuel multi-modalMulti-modal visual matching
# CTR combine
ctr_combine_score = (2000.0 * pctr * show + 0.05) ^ 4

# CVR combine
cvr_combine_score = (46351.29 * pctr * (pcvr + pcart * (1 + multi_order)) + 0.01) ^ 2

# Score final
rerank_doc_convert_score = STABLE(ctr_combine_score) * STABLE(cvr_combine_score)
^4
Puissance 4 sur le CTR
CTR raised to power 4
Doubler le CTR = x16 le score
Doubling CTR = x16 the score
^2
Puissance 2 sur le CVR
CVR raised to power 2
Doubler le CVR = x4 le score
Doubling CVR = x4 the score
46,351
Multiplicateur CVR
CVR multiplier
Coefficient astronomique qui amplifié la conversion
Astronomical coefficient that amplifies conversion

La formule est violemment non-linéaire. Une petite amélioration du CTR produit un impact énorme sur le ranking. Optimiser le taux de clic sur la fiche produit est le levier numéro 1.

The formula is violently non-linear. A small CTR improvement produces a huge ranking impact. Optimizing click-through rate on the product listing is the #1 lever.

# eCPM e-commerce (Fine Rank)
ecpm_score = p_ctr * (p_buy_cvr + p_cart_cvr * (1 + p_multi_order)) * bid * roi2_p_gmv * 1000

Le multi-order est intégré directement : pCVR + pCart x (1 + multi_order). Les produits qui génèrent des commandes multiples sont structurellement favorisés.

Multi-order is integrated directly: pCVR + pCart x (1 + multi_order). Products that generate multiple orders are structurally favored.

La formule est en place. Mais qui gagne dans ce système ?

The formula is in place. But who wins in this system?

8

Les "key sellers", la pertinence BERT et les mécanismes de boost

Key sellers, BERT relevance, and boost mechanisms

Un boost x10 000 invisible, un scoring BERT à 3 paliers, et le CTCVR comme seul signal qui compte

An invisible x10,000 boost, 3-tier BERT scoring, and CTCVR as the only signal that matters

Le boost "key seller" : x10 000

The "key seller" boost: x10,000

Ce n'est PAS un statut public officiel de TikTok Shop. Les programmes publics (Beginner/Standard/Premium/Pro, Official Shop, Gold Star, Silver Star) sont distincts. key_seller_type est une classification interne invisible, attribuée côté serveur, que le vendeur ne peut ni voir ni demander.

This is NOT an official public TikTok Shop status. Public programs (Beginner/Standard/Premium/Pro, Official Shop, Gold Star, Silver Star) are separate. key_seller_type is an invisible internal classification, assigned server-side, that the seller cannot see or request.

key_seller_boost = IF3(key_seller_type > 0, 10000, 1)   // x10 000 pour les key sellers// x10,000 for key sellers

Pertinence BERT (3 niveaux)BERT relevance (3 tiers)

TikTok utilise un modèle BERT pour évaluer la pertinence entre la requête de recherche et chaque produit. Le score BERT détermine un multiplicateur à 3 paliers qui impacte directement le classement. Un produit non pertinent voit son score divisé par 10 - ou tombe à zéro en inner flow.

TikTok uses a BERT model to evaluate relevance between the search query and each product. The BERT score determines a 3-tier multiplier that directly impacts ranking. An irrelevant product sees its score divided by 10 - or drops to zero in inner flow.

product_relevance = IF3(bert_category_score >= 3.0, 1.0,      // Haute : poids 100%// High: 100% weight
                   IF3(bert_category_score >= 1.0, 0.34,    // Moyenne : poids 34%// Medium: 34% weight
                    0.1))                            // Faible : poids 10%// Low: 10% weight
>= 3.0
Haute pertinence
High relevance
Poids 1,0 (100%). Plein poids dans le ranking.
Weight 1.0 (100%). Full weight in ranking.
>= 1.0
Pertinence moyenne
Medium relevance
Poids ~0,34. Deux tiers du score perdus.
Weight ~0.34. Two thirds of score lost.
< 1.0
Faible pertinence
Low relevance
Poids 0,1 (10%). En inner flow : 0,0 (invisible total).
Weight 0.1 (10%). In inner flow: 0.0 (completely invisible).

Le CTCVR domine le rerankingCTCVR dominates reranking

ParamètreParameterValeurValueSignificationMeaning
ctcvr_alpha2CTCVR domineCTCVR dominates
ctcvr_beta100
ctr_alpha / beta0 / 0CTR seul = zéro poidsCTR alone = zero weight
gmv_alpha / beta0 / 0GMV seul = zéro poidsGMV alone = zero weight

Le CTCVR (clic x conversion) est le seul signal qui compte dans le reranking e-commerce. Le CTR seul et le GMV seul ont un poids zéro. TikTok ne classe pas par valeur de panier mais par probabilité de conversion. Un produit à 5 euros qui convertit bien battra un produit à 500 euros qui convertit mal.

CTCVR (click x conversion) is the only signal that matters in e-commerce reranking. CTR alone and GMV alone have zero weight. TikTok doesn't rank by cart value but by conversion probability. A 5 euro product that converts well will beat a 500 euro product that converts poorly.

# Rawrank boost chain
boost_score = rawrank_cold_boost
            * rawrank_cold_level_boost
            * rawrank_cold_hatch_boost
            * goods_boost_weight
            * key_seller_boost

Cold start produit

Product cold start

Les nouveaux produits sans historique de vente recoivent un boost temporaire de x1 000 et sont places en position 4 a 6 du classement. Au fil de la session, l'algorithme reduit progressivement ce boost : le produit doit prouver qu'il convertit pour maintenir sa visibilite. Si les performances restent faibles, le boost est desactive.

New products with no sales history receive a temporary x1,000 boost and are placed at positions 4-6 in the ranking. Throughout the session, the algorithm gradually reduces this boost: the product must prove it converts to maintain visibility. If performance remains low, the boost is disabled.

0,6
0.6
beta eCPM organique
Organic eCPM beta
Contenu organique standard
Standard organic content
0,01
0.01
beta eCPM sponsorise
Sponsored eCPM beta
Contenu e-com sponsorise. Les contenus e-com organiques performants ont un avantage massif.
Sponsored e-com content. High-performing organic e-com content has a massive advantage.

Les quatre surfaces sont décryptées. Mais quel est le moteur sous le capot ?

All four surfaces are decoded. But what's the engine under the hood?

9

22 modèles serveur, 14 modèles on-device, des centaines de signaux

22 server models, 14 on-device models, hundreds of signals

L'inventaire complet de l'intelligence artificielle decouverte dans l'application

The complete inventory of AI discovered in the application

L'ensemble des mecanismes etudies precedemment repose sur un ecosysteme de modeles ML. Le feed, le search, la pub et le commerce partagent certains modeles (le v1054 sert au feed ET au search) mais en deploient aussi de specifiques. Voici l'inventaire complet, tel qu'il ressort de l'analyse.

All the mechanisms studied previously rely on an ecosystem of ML models. Feed, search, ads and commerce share some models (v1054 serves both feed AND search) but also deploy specific ones. Here's the complete inventory as it emerged from the analysis.

Modèles serveur (22+ modèles SAIL)Server models (22+ SAIL models)

DomaineDomainModeleModelVersionTargets iNombre de comportements que le modele predit simultanement. Par exemple, 19 targets signifie que le modele predit 19 actions differentes (like, share, skip, etc.) en une seule inference.Number of behaviors the model predicts simultaneously. For example, 19 targets means the model predicts 19 different actions (like, share, skip, etc.) in a single inference.Surface
Video (feed+search)tiktok_video_ctr_v1054r131418819Feed + Search
Utilisateur (search)User (search)mt_user_ctr_v250r131334516Search
E-com (search)tiktok_search_ecom_us_v1284r130196021Commerce
E-com GMVtiktok_search_ecom_us_v1303r13032877Commerce
Top1 CTRtiktok_top_1_ctr_v9r12989854Search
POImt_poi_v15r12332185Search
Photo searchtiktok_photo_search_us_v7r13192286Search
E-com reranktiktok_mall_rerankr12733641Commerce
Coldstart uplifttiktok_ecom_search_coldstart_uplift_v2r1125067--Commerce
SDR cross-modalsdr_query_no_wide_withpretrain219407--Search
SDR personnaliséPersonalized SDRtiktok_video_personalize_sdr_v64r1298962--Search
LLM relevancefinerel_trelv1_q4pack20251226--Search
E-com rawrank CTCVRtiktok_us_ecom_search_rawrank_ctcvrr1236378--Commerce
U2I retrievaltiktok_us_search_ecom_u2i_retrieval_v254r1251697--Commerce
UFS recalltiktok_search_ecom_us_v1170r1256398--Commerce
Graphe socialSocial graphtiktok_social_g_2_d_v7r12991451Feed
Lemon8 rétentionlemon_8_tt_v12r13063831Feed
Help post intenthelppost_intention_model_bertmatch_promptv10_1----Search
Post-intenttt_search_post_intent_model_v1r1279341--Search
Détection objetsObject detectiondino_ecom_without_text_0.4----Commerce

Tous ces modèles sont servis depuis les clusters oci_ies_search_mtdh_72 et oci_search_ecom_mtdh_64, datacenters useast5 et useast8. Le modèle v1054 est le plus polyvalent : il sert à la fois au feed For You et au fine rank du search.

All models are served from clusters oci_ies_search_mtdh_72 and oci_search_ecom_mtdh_64, datacenters useast5 and useast8. Model v1054 is the most versatile: it serves both the For You feed and search fine rank.

22+
modèles serveur SAIL
SAIL server models
useast5/8
datacenters de serving
serving datacenters
19+21
targets max (feed: 19, e-com: 21)
max targets (feed: 19, e-com: 21)

Modèles on-device (14 déploiements Pitaya)On-device models (14 Pitaya deployments)

SurfaceModeleModelDescription
Feedcomment_ml_v3Prediction ouverture commentaires (122 features, ByteNN)Comment open prediction (122 features, ByteNN)
Feedrepost_guidesScore de probabilite de repost (10 signaux, poids 0,25 / 0,10)Repost probability score (10 signals, weights 0.25/0.10)
Feedvod_playtime_predictionPrediction temps de visionnage AVANT lectureWatch time prediction BEFORE playback
Adstiktok_showtime_ad_gapReranking placement publicitaire (package "daogua")Ad placement reranking (package "daogua")
Searchsearch_auto_suggestRanking suggestions on-device (9 variantes)On-device suggestion ranking (9 variants)
Searchsearch_smart_object_detectionDetection objets recherche visuelleVisual search object detection
Searchsearch_inflow_load_more_androidReranking au load-moreLoad-more reranking
Searchsearch_highlight_click_v2_androidPrediction clic highlightsHighlight click prediction
E-comgec_search_fyp_click_predictionPrediction clic FYP depuis searchFYP click prediction from search
E-comgec_search_featureFeatures e-commerce searchE-commerce search features
E-comec_real_time_feature_fetchFeatures e-com temps reelReal-time e-com features
Livelive_title_intent_bytennIntent du titre de liveLive title intent
Livelive_inner_room_duration_predictionPrediction duree en live roomLive room duration prediction
Permspermission_triggerDeclenchement permissions ML (CTR seuil : 0,08)ML permission trigger (CTR threshold: 0.08)

ByteNN : le modèle embarquéByteNN: the embedded model

Un réseau de neurones de 300 KB qui prédit en temps réel si vous allez ouvrir les commentaires

A 300 KB neural network that predicts in real-time if you'll open comments

300,6 KB
300.6 KB
Taille du modèle ByteNN (BM v4.0)
ByteNN model size (BM v4.0)
87,6%
87.6%
Sparsity (modèle élagué pour mobile)
Sparsity (pruned for mobile)
8/541
Couches actives sur 541 nœuds
Active layers out of 541 nodes
0,64
0.64
Seuil de décision
Decision threshold

122 features réparties en 12 catégories122 features across 12 categories

CatégorieCategoryNb features# featuresExemplesExamples
Interaction commentairesComment interactions29click_comment, post_comment_cnt, comment_trending_words_*
Predictions serveur (p_*)Server predictions (p_*) iPredictions brutes calculees par le serveur et envoyees au telephone. Le modele on-device les reutilise comme entrees pour affiner sa propre prediction locale.Raw predictions computed by the server and sent to the phone. The on-device model reuses them as inputs to refine its own local prediction.26p_play_0..9, p_like_0..9, p_comment_8/9
Historique play timePlay time history14play_time_0..9, _avg, _mid, _min, _total
Scores reco serveur (rec_*)Server reco scores (rec_*)11rec_staytime, rec_click_comment_model_score
Engagement historiqueHistorical engagement9click_pause_cnt, favourite_cnt, finish_cnt
Session couranteCurrent session9cur_head, cur_like, cur_playtime, cur_gap_time
Stats utilisateur (u_*)User stats (u_*)7u_comment_cnt, u_continue_skip, u_vv_cnt
Stats vidéo (v_*)Video stats (v_*)6v_comment_cnt, v_like_cnt, v_play_count
Appareil/hardwareDevice/hardware5battery_pct, is_charge, battery_temperature, screen_brightness, cpu_usage
RéseauNetwork2speed_4g, speed_wifi
Performance (GC) iLe garbage collector de Java libere automatiquement la memoire inutilisee. Quand il tourne trop souvent, l'app se fige brievement - signe que le telephone est sous pression.Java's garbage collector automatically frees unused memory. When it runs too often, the app briefly freezes - a sign the phone is under pressure.2gc_block_count, gc_block_time
Contexte sceneScene context iIndique dans quel ecran de l'app vous etes (feed principal, page profil, page recherche...). Le comportement de commentaire varie selon le contexte de navigation.Indicates which screen of the app you're on (main feed, profile page, search page...). Comment behavior varies depending on the navigation context.2aweme_scene (one-hot)

Votre batterie et le garbage collector Java sont des signaux ML

Your battery and Java garbage collector are ML signals

Parmi les 122 features, on trouve des signaux materiels inhabituels : le niveau de batterie (battery_pct), la temperature de la batterie, la luminosite de l'ecran, l'utilisation CPU, et meme le garbage collector Java (gc_block_count, gc_block_time). TikTok utilise l'etat physique de votre telephone comme signal predictif de votre comportement. Si votre telephone rame (CPU sature, garbage collector qui bloque l'app, batterie faible), le modele en deduit que vous etes moins susceptible d'interagir - l'experience est degradee, donc vous allez scroller plus vite et moins ouvrir les commentaires.

Among the 122 features are unusual hardware signals: battery level (battery_pct), battery temperature, screen brightness, CPU usage, and even the Java garbage collector (gc_block_count, gc_block_time). TikTok uses the physical state of your phone as a predictive signal for your behavior. If your phone is lagging (CPU saturated, garbage collector blocking the app, low battery), the model infers you're less likely to interact - the experience is degraded, so you'll scroll faster and open comments less often.

Libraries natives MLNative ML libraries

TikTok embarque dans son application un ensemble de libraries natives (fichiers .so) qui forment un framework complet d'inference ML directement sur votre telephone. Ces libraries permettent d'executer des modeles de machine learning, du traitement d'evenements complexes, du fingerprinting audio, et meme un SDK de provenance de contenu (C2PA).

TikTok ships within its application a set of native libraries (.so files) that form a complete ML inference framework directly on your phone. These libraries enable running machine learning models, complex event processing, audio fingerprinting, and even a content provenance SDK (C2PA).

LibraryFonctionFunction
libbytenn.soByteNN (framework inférence ML, équivalent TFLite)ByteNN (ML inference framework, TFLite equivalent)
libbytennwrapper.soWrapper ByteNN
libclient_ai_impl_jni.soImplémentation Client AI (bridge JNI)Client AI implementation (JNI bridge)
libCepAST.soAST - Complex Event Processing
libCepEngine.soMoteur CEPCEP engine
libaudio_fingerprint_sdk.soFingerprinting audioAudio fingerprinting
libbytedt.soDecision tree ByteDance
libdex_df_pitaya.soDEX-in-SO (code Java caché dans lib native)DEX-in-SO (Java code hidden in native lib)
libtt_c2pa_sdk.soSDK C2PA (provenance contenu)C2PA SDK (content provenance)

Feature Store on-device (4 producteurs)On-device Feature Store (4 producers)

Un Feature Store est une base de donnees locale qui collecte et organise en continu les signaux de votre telephone pour alimenter les modeles ML. TikTok en deploie 4, chacun specialise dans un type de donnees : etat de l'appareil, profil utilisateur, comportement de scroll, et historique d'achat.

A Feature Store is a local database that continuously collects and organizes signals from your phone to feed ML models. TikTok deploys 4 of them, each specialized in a type of data: device state, user profile, scroll behavior, and purchase history.

GroupeGroupClasseClassSignaux collectésCollected signals
ies_basicIESBasicFeaturePTYProducerÉtat réseau (wifi/4G/5G), type appareil, mémoire, CPUNetwork state (wifi/4G/5G), device type, memory, CPU
f_solaria_portraitPortraitFeaturePTYProducerPortrait utilisateur : intérêts, historique, segmentsUser portrait: interests, history, segments
ies_ptyAWEFeaturePTYGroupVitesse de scroll (sliding_velocity_x/y)Scroll speed (sliding_velocity_x/y)
tt_commerceCommerceFeatureCenterPitayaProducerHistorique d'achat, panier, navigation produitPurchase history, cart, product browsing

Ces 4 producteurs collectent en continu des features temps reel sur l'appareil. Le Feature Store local alimente les modeles on-device (ByteNN, CEP) et uploade periodiquement des donnees d'entrainement vers le serveur via le systeme de Federated Learning. Le cycle complet : collecte des features au "play_first_frame", collecte du ground truth au "play_stop", envoi au serveur pour re-entrainement distribue.

These 4 producers continuously collect real-time features on the device. The local Feature Store feeds on-device models (ByteNN, CEP) and periodically uploads training data to the server via the Federated Learning system. Full cycle: feature collection at "play_first_frame", ground truth collection at "play_stop", upload to server for distributed retraining.

Chiffres clés globauxGlobal key figures

207,359
classes Java analysées
Java classes analyzed
22+
modèles serveur SAIL
SAIL server models
14
déploiements Pitaya confirmés
confirmed Pitaya deployments
665
expériences A/B (dont 170 feed/ranking)
A/B experiments (incl. 170 feed/ranking)
278
paramètres SATI (ads)
SATI parameters (ads)
16
sources de recall search
search recall sources
806
suggestions pré-cachées
pre-cached suggestions
9
libraries natives ML (.so)
native ML libraries (.so)

L'inventaire est dressé. Qu'est-ce que tout cela change en pratique ?

The inventory is complete. What does all this change in practice?

10

Ce que ca change en pratique

What this means in practice

Trois publics, trois playbooks

Three audiences, three playbooks

For creators

Pour les créateurs

Hook in 0.8 seconds or you don't exist
Accrochez en 0,8 seconde ou vous n'existez pas

The play_time_prob_dist field sets the "meaningful view" threshold at 0.8 seconds (800ms). Below that, the system registers a skip. Watch time carries a gamma of 1.08 (super-linear): watching 2x longer gives more than 2x the score. Every second of retention compounds.

Le champ play_time_prob_dist fixe le seuil de "vue significative" a 0,8 seconde (800ms). En dessous, le systeme enregistre un skip. Le watch time a un gamma de 1.08 (super-lineaire) : regarder 2x plus longtemps donne plus de 2x le score. Chaque seconde de retention se compose.

Front-load your hook. The first frame matters more than your hashtags.
Mettez votre accroche en premier. La premiere image compte plus que vos hashtags.
Make them open the comments
Faites-leur ouvrir les commentaires

3 out of 19 model targets are comment-specific: posting a comment, liking a comment, reading comments. The on-device ByteNN model (122 features) runs a dedicated prediction for comment panel opens. Asking a question or creating a debate isn't a trick, it's feeding a super-signal.

3 des 19 cibles du modele sont liees aux commentaires : poster un commentaire, liker un commentaire, lire les commentaires. Le modele ByteNN on-device (122 features) effectue une prediction dediee pour l'ouverture du panneau de commentaires. Poser une question ou creer un debat n'est pas un truc - c'est nourrir un super-signal.

Design for discussion, not just for views.
Concevez pour la discussion, pas seulement pour les vues.
Get verified before getting famous
Faites-vous verifier avant de devenir celebre

Creator boost levels are inverted. Level 1 (verified) = 5.02x. Level 0 (new) = 4.40x. Level 2 (star) = 1.44x. The algorithm rewards verification more than celebrity.

Les niveaux de boost createur sont inverses. Niveau 1 (verifie) = 5,02x. Niveau 0 (nouveau) = 4,40x. Niveau 2 (star) = 1,44x. L'algorithme recompense la verification plus que la celebrite.

Apply for verification early. The algorithmic payoff is 3.5x higher than being a "star."
Demandez la verification tot. Le gain algorithmique est 3,5x plus eleve que d'etre une "star".
Cross-scene dedup = 30 min
Deduplication cross-scene = 30 min

If someone sees your video in search or on your profile, it disappears from their FYP for 30 minutes, then comes back. Search and FYP traffic don't permanently cannibalize each other.

Si quelqu'un voit votre video dans le search ou sur votre profil, elle disparait de son FYP pendant 30 minutes, puis revient. Le trafic search et FYP ne se cannibalisent pas de facon permanente.

Content quality has its own x5 multiplier
La qualite du contenu a son propre multiplicateur x5

predict_content_value is weighted at x5, independent of engagement metrics. Production quality (VQScore range: 55-75), originality, and informativeness appear to feed this signal directly.

predict_content_value est pondere a x5, independamment des metriques d'engagement. La qualite de production (VQScore : 55-75), l'originalite et le caractere informatif semblent nourrir directement ce signal.

High production value has a direct algorithmic reward, separate from likes and shares.
Une production de qualite a une recompense algorithmique directe, separee des likes et partages.

For TikTok SEO

Pour le SEO TikTok

Search is NOT a subset of the feed
Le search N'EST PAS un sous-ensemble du feed

TikTok search has its own pipeline, its own models (user model v250: 16 targets), its own value tree, and a relevance LLM (finerel_trelv1_q4pack, deployed December 2025). Treat it as a standalone search engine.

Le search TikTok a son propre pipeline, ses propres modeles (modele utilisateur v250 : 16 cibles), son propre arbre de valeurs, et un LLM de pertinence (finerel_trelv1_q4pack, deploye en decembre 2025). Traitez-le comme un moteur de recherche autonome.

Optimize for search separately from your FYP strategy.
Optimisez le search independamment de votre strategie FYP.
The #1 result has its own model
Le resultat #1 a son propre modele

A dedicated model (tiktok_top_1_ctr_v9) evaluates exclusively the first search result. One of its targets: predict_changeq, the probability you'll change your query. TikTok optimizes position 1 so you stop searching.

Un modele dedie (tiktok_top_1_ctr_v9) evalue exclusivement le premier resultat de recherche. L'une de ses cibles : predict_changeq, la probabilite que vous changiez votre requete. TikTok optimise la position 1 pour que vous arretiez de chercher.

Ranking #1 vs #2 isn't a matter of degree. It's a different model entirely.
Etre #1 vs #2 n'est pas une question de degre. C'est un modele entierement different.
Category alignment is near-binary
L'alignement de categorie est quasi-binaire

TikTok uses a BERT language model to score how well your content matches its assigned category. If the match is strong (score >= 3.0), you get full ranking weight. If it's moderate (score >= 1.0), you lose two thirds of your weight. Below that, you're nearly invisible. There's no smooth gradient: you're either well-categorized or penalized.

TikTok utilise un modele de langage BERT pour scorer la correspondance entre votre contenu et sa categorie assignee. Si la correspondance est forte (score >= 3.0), vous obtenez 100% du poids de ranking. Si elle est moderee (score >= 1.0), vous perdez les deux tiers. En dessous, vous etes quasi-invisible. Pas de gradient lisse : soit vous etes bien categorise, soit penalise.

Match the right category cleanly. A partial match costs you 66% of your ranking power.
Correspondez proprement a la bonne categorie. Une correspondance partielle coute 66% de votre puissance de ranking.
Search ranking is semantic, not keyword-based
Le ranking search est semantique, pas base sur les mots-cles

TikTok's search retrieval uses XLM-R, a multilingual BERT model (viking_xlmr_recall). It doesn't match keywords: it understands meaning. The model processes the intent behind your query, not the exact words. This means exact keyword optimization matters far less than topical and semantic relevance.

Le retrieval search de TikTok utilise XLM-R, un modele BERT multilingue (viking_xlmr_recall). Il ne fait pas du matching de mots-cles : il comprend le sens. Le modele traite l'intention derriere votre requete, pas les mots exacts. L'optimisation par mots-cles exacts compte donc beaucoup moins que la pertinence semantique et thematique.

Write for meaning, not for keyword density. Cover the topic naturally instead of repeating exact phrases.
Ecrivez pour le sens, pas pour la densite de mots-cles. Couvrez le sujet naturellement au lieu de repeter des expressions exactes.
Feed and search share your data, both ways
Feed et search partagent vos donnees, dans les deux sens

The last 1,000 feed interactions are sent as features to the search model. Conversely, search_result_darwin_recall injects search-discovered videos into the FYP.

Les 1 000 dernieres interactions feed sont envoyees comme features au modele search. Inversement, search_result_darwin_recall injecte les videos decouvertes via le search dans le FYP.

Your feed behavior shapes your search results. Your search behavior shapes your feed. They're one system with two interfaces.
Votre comportement dans le feed faconne vos resultats de recherche. Votre comportement de recherche faconne votre feed. C'est un seul systeme avec deux interfaces.
Search context changes the algorithm
Le contexte de recherche change l'algorithme

A search triggered from a trend boosts viral results. A manual typed search favors semantic relevance. The search_source parameter changes which ranking signals dominate.

Une recherche declenchee depuis une tendance booste les resultats viraux. Une recherche manuelle tapee favorise la pertinence semantique. Le parametre search_source change quels signaux de ranking dominent.

For e-commerce marketers

Pour les marketeurs e-commerce

CTR is raised to the 4th power
Le CTR est eleve a la puissance 4

The mall rerank formula: (2000 x pctr x show + 0.05) ^ 4. Doubling your click-through rate multiplies your score by 16. This is the single most disproportionate lever in TikTok Shop.

La formule de reranking mall : (2000 x pctr x show + 0.05) ^ 4. Doubler votre taux de clic multiplie votre score par 16. C'est le levier le plus disproportionne de TikTok Shop.

Invest in product thumbnails, titles, and first-frame visuals above everything else. That's where ranking is decided.
Investissez dans les vignettes produit, les titres et les visuels de premiere image avant tout. C'est la que le ranking se decide.
Conversion probability beats cart value
La probabilite de conversion bat la valeur du panier

CTCVR dominates reranking (alpha=2, beta=100). Raw CTR alone: zero weight. Raw GMV alone: zero weight. TikTok ranks by the probability you'll click AND buy, not by how expensive the product is.

Le CTCVR domine le reranking (alpha=2, beta=100). Le CTR seul : poids zero. Le GMV seul : poids zero. TikTok classe par la probabilite que vous cliquiez ET achetiez, pas par le prix du produit.

A $50 product that converts at 1% will outrank a $500 product that converts at 0.5%.
Un produit a 50$ qui convertit a 1% depassera un produit a 500$ qui convertit a 0,5%.
Multi-order products are structurally favored
Les produits multi-commandes sont structurellement favorises

The eCPM formula includes (1 + p_multi_order) as a direct multiplier. Products that generate repeat purchases or bundle orders get a built-in ranking boost.

La formule eCPM inclut (1 + p_multi_order) comme multiplicateur direct. Les produits qui generent des rachats ou des commandes groupees beneficient d'un boost de ranking integre.

Bundle offers, consumables, and "buy 2 get 1" structures have an algorithmic advantage.
Les offres groupees, les consommables et les structures "2 achetes 1 offert" ont un avantage algorithmique.
The x10,000 "key seller" boost is real, and invisible
Le boost x10 000 "key seller" est reel, et invisible

key_seller_type > 0 triggers a x10,000 multiplier in raw rank. This classification doesn't appear in any official TikTok Shop program (Beginner/Standard/Premium/Pro, Official Shop, Gold Star, Silver Star). It's assigned server-side. You can't see it, request it, or know if you have it.

key_seller_type > 0 declenche un multiplicateur x10 000 dans le raw rank. Cette classification n'apparait dans aucun programme officiel TikTok Shop (Beginner/Standard/Premium/Pro, Official Shop, Gold Star, Silver Star). Elle est assignee cote serveur. Vous ne pouvez ni la voir, ni la demander, ni savoir si vous l'avez.

BERT category score is a gate, not a gradient
Le score de categorie BERT est un seuil, pas un gradient

Score < 1.0 -> relevance drops to 10% (standard flow) or 0% (inner flow). A product poorly classified by BERT becomes invisible regardless of its conversion rate.

Score < 1.0 -> la pertinence tombe a 10% (flux standard) ou 0% (inner flow). Un produit mal classifie par BERT devient invisible quel que soit son taux de conversion.

Ensure your product listing semantically matches its category. Misclassification is an algorithmic death sentence.
Assurez-vous que votre fiche produit correspond semantiquement a sa categorie. Une mauvaise classification est une condamnation algorithmique.
Organic e-com content crushes paid in organic ranking
Le contenu e-com organique ecrase le paid en ranking organique

Organic e-commerce content eCPM beta = 0.6. Sponsored e-commerce content eCPM beta = 0.01. That's a 60x advantage for high-performing organic content over paid placements in organic ranking positions.

Contenu e-commerce organique eCPM beta = 0.6. Contenu e-commerce sponsorise eCPM beta = 0.01. C'est un avantage de 60x pour le contenu organique performant par rapport aux placements payes dans les positions de ranking organique.

A viral organic product video will outperform a paid ad in the same ranking. Invest in content before you invest in ad spend.
Une video produit organique virale surpassera une pub payee au meme rang. Investissez dans le contenu avant d'investir en budget pub.
11

Ce qu'on a aussi découvert

What we also found

Contenu technique complémentaire issu de l'analyse

Additional technical content from the analysis

~76s
pour vous profiler
to profile you
Du premier écran au premier swipe sur le feed
From first screen to first swipe on the feed
~0s

Splash screen

~61s

Google Login

(~61.3s)

~62s

Push Permission

(+0.2s)

~68s

4 intérêts en ~7 sec

4 interests in ~7 sec

(+7s)

~76s

1er swipe sur le feed

1st swipe on feed

(+8s)

Seuil cold start = 10 vidéo views

Cold start threshold = 10 video views

Le champ is_within_10vv (field 40) signifie "is within 10 vidéo views". Sa valeur false indique que l'utilisateur a dépassé ce seuil. Des champs adjacents (need_coldstart_force, need_heat_force) suggèrent un système plus nuancé qu'un simple seuil binaire.

The field is_within_10vv (field 40) means "is within 10 video views". Its false value indicates the user has passed this threshold. Adjacent fields (need_coldstart_force, need_heat_force) suggest a more nuanced system than a simple binary threshold.

6 vidéos pré-cachées

6 pre-cached videos

Le cache local contient 6 vidéos FYP pré-chargées avec 5 catégories de diversification distinctes. Chaque vidéo inclut un champ play_time_prob_dist : un triplet [800ms, probabilité, durée attendue].

The local hidden contains 6 pre-loaded FYP videos with 5 distinct diversification categories. Each video includes a play_time_prob_dist field: a triplet [800ms, probability, expected duration].

Classification qualité de production

Production quality classification

vod_sr_class_v30_score

  • Plage 27-28 : UGC standard
  • Range 27-28: Standard UGC
  • Plage 40-45 : Semi-pro
  • Range 40-45: Semi-pro
  • Plage 60-63 : Production professionnelle
  • Range 60-63: Professional production

Niveau 1 - Créateur

Level 1 - Creator

Déclaration manuelle via un toggle dans l'app. Le créateur peut changer son label à tout moment - mais TikTok a ses propres labels indépendants.

Manual declaration via an in-app toggle. The creator can change their label at any time - but TikTok has its own independent labels.

Niveau 2 - Auto-détection

Level 2 - Auto-detection

Détection automatique via le standard C2PA (Adobe, Microsoft). Analyse les watermarks invisibles et l'empreinte du contenu.

Automatic detection via the C2PA standard (Adobe, Microsoft). Analyzes invisible watermarks and content fingerprint.

Niveau 3 - Modération

Level 3 - Moderation

moderation_aigc_label_type - Pipeline indépendant. Troisième avis qui peut contredire le créateur ET l'auto-détection.

moderation_aigc_label_type - Independent pipeline. Third opinion that can override both creator AND auto-detection.

InformationInformationChampFieldSignificationMeaning
Source originaleOriginal sourcefirstSrc, lastSrcD'ou vient le contenuContent origin
Source IAAI sourcefirstAigcSrc, lastAigcSrcQuel outil IA a étéutiliséWhich AI tool was used
Outil d'éditionEditing toolisTiktok, isCapcutCréé dans TikTok ou CapCutCreated in TikTok or CapCut
Pourcentage IAAI percentageaigcPercentageTypeProportion IA du contenuAI proportion of content
Watermark invisibleInvisible watermarkhasInvisibleWatermarkC2PA
EmpreinteFingerprintfingerprintIDIdentifiant unique du contenuUnique content ID

Le créateur peut modifier son label - mais TikTok maintient 2 labels indépendants (auto-détection + modération). Avec le tracking du pourcentage IA, des watermarks invisibles et de l'historique des empreintes, TikTok a une vision complète de l'origine du contenu.

The creator can change their label - but TikTok maintains 2 independent labels (auto-detection + moderation). With AI percentage tracking, invisible watermarks and fingerprint history, TikTok has complete visibility into content origin.

Triple encodage de localisation Triple location encoding

H3 (Uber)

Hexagones hiérarchiques, Distance uniforme entre voisins. Utilisé par TikTok pour l'indexation géospatiale et le seuil de déplacement (seuil de distance).

Hierarchical hexagons, Uniform distance between neighbors. Used by TikTok for geospatial indexing and movement threshold (seuil de distance).

GeoHash (Public domain)

Rectangles base-32, Compact, préfixe = inclusion géographique. Utilisé pour la transmission chiffrée au serveur.

Base-32 rectangles, Compact, prefix = geographic inclusion. Used for encrypted transmission to server.

S2 (Google)

Quadtree sphérique, Couverture uniforme, pas de distorsion polaire. Utilisé pour l'indexation alternative.

Spherical quadtree, Uniform coverage, no polar distortion. Used for alternative indexing.

Les coordonnées GPS brutes ne sont jamais envoyées en clair. Un paramètre configurable par le serveur sélectionne quel système de chiffrement est utilisé.

Raw GPS coordinates are never sent in clear text. A server-configurable parameter selects which encryption system is used.

Précision configurable dynamiquement Dynamically configurable precision

Le paramètre de résolution H3 (envoyé par le serveur) contrôle le niveau de détail :

The H3 resolution parameter (sent by server) controls the detail level:

Résolution H3H3 Resolution SurfaceArea Ce que TikTok saitWhat TikTok knows
4 ~1 770 km²~1,770 km² Votre pays/régionYour country/region
7 ~5.16 km² Votre villeYour city
9 ~0.105 km² Votre quartierYour neighborhood
11 ~0.002 km² Votre rueYour street
13 ~43 m² Votre bâtimentYour building
15 ~0.9 m² Votre position exacteYour exact position

Autres caractéristiques de la géolocalisation Other geolocation features

Reporting basé sur le déplacement

Movement-based reporting

Le reporting n'est pas périodique mais déclenché par le mouvement : seuil de distance pour un nouveau report, plafond quotidien, intervalle minimum entre deux envois. Tracking réduit quand l'app est en arrière-plan.

Reporting is not periodic but triggered by movement: distance threshold for new report, daily cap, minimum interval between sends. Reduced tracking when app is in background.

BPEA (ByteDance Privacy Enforcement Architecture)

Toutes les méthodes d'accès à la localisation passent par BPEA. Chaque demande de position exige un certificat valide, ce qui permet un audit interne de qui accède aux données.

All location access methods go through BPEA. Each location request requires a valid certificate, enabling internal audit of who accesses the data.

POI : 22 champs par lieu

POI: 22 fields per location

Chaque POI associé à une vidéo contient : nom du lieu, type, nombre de vidéos taguées, adresse complète (avec 5 niveaux hiérarchiques : pays > région > département > ville > quartier), IDs produits associés, statut de revendication.

Each POI associated with a video contains: location name, type, number of tagged videos, full address (with 5 hierarchical levels: country > region > department > city > district), associated product IDs, claim status.

Le boost géographique utilise ces donnéesGeographic boost uses this data

Le champ poi_boost (Section 6) utilise les données de POI pour booster le contenu géographiquement pertinent. Si vous taguez un lieu précis, votre vidéo peut être boostée auprès des utilisateurs proches de ce POI.

The poi_boost field (Section 6) uses POI data to boost geographically relevant content. If you tag a specific location, your video can be boosted to users near that POI.

Différenciation régionale à 5 niveaux Regional differentiation at 5 levels

Region LocalisationLocation Login socialSocial login Stripping donnéesData stripping Serveur APIAPI Server ConsentementConsent
US BloquéeBlocked Google, Facebook, Twitter 26 params supprimés pour mineurs (COPPA/FTC)26 params removed for minors (COPPA/FTC) api19-va (tier 1) Consent box USUS consent box
EU/EEA (32 payscountries) Active Google, Facebook, Twitter NonNo api16-va (tier 2) Consent box EU (RGPD)EU consent box (GDPR)
KR (Corée du SudSouth Korea) Active + KakaoTalk NonNo api16-va (tier 2) Consent box KR (PIPA)KR consent box (PIPA)
JP/TH (Japon, ThaïlandeJapan, Thailand) Active + LINE NonNo api16-va (tier 2) Consent box standardStandard consent box
ROW (reste du monderest of world) Active Google, Facebook, Twitter NonNo api16-va (tier 2) Consent box standardStandard consent box

La géolocalisation précise est désactivée par défaut aux US et en Australie. Le Canada reçoit une précision réduite. Google One-Tap Sign-In est désactivé aux US.

Precise geolocation is disabled by default in US and Australia. Canada receives reduced precision. Google One-Tap Sign-In is disabled in the US.

Contexte US : TikTok sous pression politique

US context: TikTok under political pressure

Aux Etats-Unis, TikTok fait face a des menaces d'interdiction depuis 2020. Le code reflète cette pression : géolocalisation désactivée par défaut, 26 paramètres supprimés pour les mineurs (COPPA/FTC), serveur API dédié (tier 1). Ces restrictions techniques sont absentes des autres régions.

In the United States, TikTok has faced ban threats since 2020. The code reflects this pressure: geolocation disabled by default, 26 parameters removed for minors (COPPA/FTC), dedicated API server (tier 1). These technical restrictions are absent from other regions.

Autres sources et études Other sources and studies

Feb 2026 Google Lens Internals: Embeddings, Knowledge Graph & Result Filtering Feb 2026 AI Overview / AI Mode - Deepdive Feb 2026 How Perplexity Works Feb 2026 ChatGPT is NOT a search engine More stuffs...
RESONEO