UPDATE 28/05/2024: Google API documentation has been leaked on Github and Sparktoro (Rand Fishkin) and Mike King (ipullrank) already published about it. I included a list of all the leaked modules here.

This article is more of a note to myself so I don’t forget, its based on some skribbles, memories and different web sources, summarized using AI.

The world of search engine optimization (SEO) is a complex one, with numerous systems and algorithms at play. Google, being the dominant search engine, has always been at the forefront of these innovations. In this article, take a look at Google’s “Ascorer” and “Twiddlers” systems and shedding light on how they influence search rankings. Well, we have only very sparse information on these systems which mostly comes from talks, reverse engineering, understanding patents and leaks from the past years.

Introduction to Ascorer and Twiddlers

Google’s search algorithm is a multifaceted beast, with various components working in tandem to deliver the most relevant search results to users. Two of these components are the Ascorer and the Twiddler framework.

Twiddler Framework

The Twiddler framework is a part of Superroot and is responsible for the re-ranking of results from a single corpus. In contrast, another major ranking component in Superroot, the universal packer, combines results from multiple corpora for universal search.

A twiddler is essentially a C++ object (used at Google as part of search ranking) that provides ranking recommendations (or twiddles) based on a provisional search response from a single corpus. The unique aspect of twiddling is that it acts on a ranked sequence of results rather than on individual results.

There are two main types of twiddlers:

  1. Predoc Twiddlers: These operate on thin responses, which typically consist of several hundred results devoid of any docinfo (like snippets). They run over the full set of results returned from the backend.
  2. Lazy Twiddlers: These act on a prefix of results after fetching docinfo for them.


We dont have much information about the Ascorer system but it seems like it is some kind of base score that results out of document analysis. Specifically, while Twiddlers act on a ranked sequence of results, Ascorer seems to rank results in isolation. So I believe the ascorer system provides a document rank score and twiddlers act as a boost to document rankings.

These twiddlers (there are only 65 active as of 2018) are probably boosts / drags that are getting added based on various factors such as:

  • Device (not sure if this would be a twiddler but searching for downloadable software on a mac should boost mac software results (.dmg files) rather than .exe files.)
  • Location (if your physical location is in an area affected by a natural catastrophy (e.g., wild fires), twiddlers could be responsible for boosting news results
  • Topic (certain topics and misinformations could be affected by twiddlers, e.g., content of a certain party or viewpoints could be promoted/demoted in favor of the search engine)

Ascorer om the other hand seems to be what SEOs refer to as a system collecting ranking signals and defining a final score used for ranking. I believe Ascorer can also be referred to as being the core of the google algorithm used for information retrieval.

Why is it called “Ascorer”? It seems like Ascorer is short for Amit’s Scorer which was the person starting this project / writing it’s first version: Amit Singhal. Amit was Head of Search at Google for about 15y. There are hundreds and thousands of signals going into Ascorer and teams are creating new signals that go into this system. In short: Ascorer is where the ranking magic happens. Today, it might have been renamed. Learn-to-rank (which is now likely “RankBrain”) could be a replacement or an addition to Ascorer.

How Twiddlers Work

Goals and Design Principles

The Twiddler framework is designed with specific goals and principles in mind:

  1. Isolation: Unlike Ascorer, which has a few complex algorithms, the Twiddler framework supports hundreds of individual twiddlers. Each of these twiddlers operates in isolation, without knowledge of the decisions made by others.
  2. Interaction Resolution: Since twiddlers operate independently, they provide recommendations and constraints on ranking changes. The framework then reconciles these suggestions.
  3. Context Provision: The framework offers safe, read-only access to the context in which results are being twiddled.
  4. Ease of Experimentation: Due to their integration within Superroot, it’s often simpler to run ranking experiments using a twiddler.

Writing a Twiddler

“To create a new twiddler, one needs to derive from the base Twiddler class and override the Apply method. The TwiddlerAPI methods provide various functionalities, but the most commonly used ones are Boost and BoostAboveResult.” -> This is information for Google developers in creating a twiddler. It’s not something that SEOs can do on their own 😉

Constraint Methods

Twiddlers use constraint methods to influence result positioning and limit the number of specific result types in the final response. These constraints are typically specified via categorization.


Systems like Ascorer and Twiddlers playing crucial roles in ensuring users get the most relevant results. By understanding these systems, SEO professionals can better optimize their content and strategies to achieve higher rankings.

Please keep in mind that this article contains thoughts and notes. I don’t have any proof for the functionality of these systems. I do believe though that it’s important for SEOs to have a roguh understanding as to how a modern search engine like Google functions. I don’t fully understand these systems either since my main focus lies on buildign great user experiences

Other Projects worth researching: Project Freshdocs, Project Alexandria

Freshdocs seems to be some kind of real time document evaluation.


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.