VSXRank
Publisher guideData as of 22 September 2026

What changed before a competitor overtook your VS Code extension?

A dated method for a Marketplace rank drop: rule out jitter, check how many queries moved, list both listings' edits, and log what happened in the window.

Yash Agarwal

Builds VSXRank · 8 min read

Two extension listings swap order between searches as their rank-history lines cross.

When a competitor passes your VS Code extension in Marketplace search, the useful question is not why it happened but what changed, on which dates, on both listings. Answer that first. Confirm the move is larger than normal reshuffling and lasts several days, see whether one query moved or many, list every recorded edit and release on both sides, check the public counters, and write it down with dates. In our data most overtakes came with no visible edit at all.

When your VS Code extension rank dropped: confirm it first#

A position is one reading of one query on one day. Before you look for an explanation, make sure there is something to explain.

On 5 September 2026 we ran the same Marketplace searches twice, 25 minutes apart, and measured how far positions moved with nothing changed. The typical spread grows with depth:

Position bandTypical movement between identical searches
1–10±0.4
11–50±2.4
51–100±4.1
101–300±7.5
301+±19.5

These two-sample bands come from the 5 September probe. The linked guide reports a separate three-sample study from 8 September, using different bands and statistics; the tables are not interchangeable alert thresholds. Prefer the actual sample range for the query when available.

A drop from #140 to #146 is inside that band. A drop from #22 to #825 is not. Measuring jitter and real movement covers how we sample and why a single reading misleads.

Persistence matters as much as size. Those bands were measured minutes apart. From day to day, neighbours near the top swap more often than ±0.4 suggests. On the query theme, dracula-theme.theme-dracula and akamud.vscode-theme-onedark swapped #5 and #6 eight times between 5 and 22 September, and neither listing recorded a change.

We applied both tests to every top-10 overtake between 7 and 20 September. We counted 302 cases where one extension was behind another for two days and ahead for the next three. Only 17 moves held up once we required the passing extension to gain at least two places, to have been behind for three days, and to have stayed ahead afterwards. Most of the rest were one-place swaps.

Check whether one query moved or many#

Next, open every query you track for the extension and compare the same days. A move on a single phrase and a move across a whole group of phrases point to different parts of the listing.

On 16 September, Microsoft Edge Tools for VS Code removed ten language tags from its listing, including html, json, typescriptreact and sass. In the same window, its readings went in two directions:

  • debuggers went from #17 to #9 and stayed there through 22 September, passing docker.docker and a Salesforce extension.
  • typescriptreact (#10), javascriptreact (#9), jsonc (#11) and six other phrases matching the removed tags left the first 1,000 results.
  • html went from #465 to #515.

A rival who only watched debuggers would see a competitor overtaking them. The publisher of Edge Tools, watching typescriptreact, would see their extension disappear. Both are the same dated edit, seen from different queries. The extension also shipped a release on 15 September, so the tag edit was not the only thing that changed in that window.

After the 16 September 2026 tag edit, debuggers moved from position 17 to 9 while nine language queries left the top 1,000.
Dated Marketplace observations around the Edge Tools edit. The extension also released an update in this window; timing does not isolate an effect.

List what changed on both listings#

Work through a fixed window, for example the three days before the move and the day it appeared, and write down every change on each listing:

  1. Display name. Which words were added or removed?
  2. Tags. Keywords in the manifest become Marketplace tags. Microsoft limits them to 30 (Extension Manifest).
  3. Short description. Microsoft says the display name and description are used for text search (same page).
  4. Categories.
  5. Releases. Version numbers and dates.
  6. Publisher display name.

Record the other side, too. An overtake has two parties, and the edit may be on theirs. The Marketplace does not publish its default ranking formula, and its explicit sort options are separate from ordinary relevance search (Extension Marketplace). Your notes can show what changed. They cannot show what the ranker did with it.

Expect to come up empty often. Of the 17 durable top-10 overtakes, 11 had no recorded listing edit or release on either extension in the three days before the move. Two had only releases. Four had listing edits, and three of those four were one edit to our own extension, agsoft.claude-history-viewer, which was renamed on 14 September. The fourth was the Edge Tools tag change. An empty window is a finding too: it tells you to stop editing and keep observing.

What followed listing edits across the catalog#

We used every Marketplace listing edit that VSXRank recorded between 6 and 19 September, the last date with at least four later readings. For each one, we took every tracked query whose words were added to or removed from the edited field, and compared the reading the day before the edit was recorded with up to eight later daily readings available by 22 September (at least four for the most recent edits). A move counts as persistent only when at least three quarters of those readings sit beyond the jitter band for the starting position. Leaving the first 1,000 results counts as a worse position.

Positions of pairs that already ranked before the edit:

Edit recorded (Marketplace)Query pairsBetterNo persistent moveWorse or gone
Query words added to display name211551
Query words removed from display name251123
Query added as a tag1,04038859557
Query removed as a tag731864
Query words added to description only50715833217
Query words removed from description11021593
No recorded listing edit (13–21 Sept baseline)173,4095,590—10,609

Across listings with no recorded edit, 3.2% of positions improved by the same test and 6.1% got worse over its stated 13–21 September window. Later edit cohorts have shorter follow-up, so the rates are not a controlled like-for-like comparison. Pairs that started outside the first 1,000 behaved in a similar way. When query words were added to the display name, 36 of 58 entered the results. When the query was added as a tag, 376 of 1,744 did. When the words were added only to the description, 259 of 2,242 did.

Read this table as a timeline, not as a set of effects. Pairs are not independent, since one edit touches several queries. Many releases change the name, tags and description together, so one field cannot be isolated. The display-name rows are small. Removals line up most consistently with worse positions. That fits with an extension no longer carrying the query's words anywhere on the listing, but these data do not test that explanation.

The earlier case notes still hold on re-checking. After lninl.theme-hbuilderx-soft-green-light dropped "Light" from its display name (recorded 10 September), it read #22 for light theme the day before and #815–#849 for the next eight days. After Arcane-Spark.ubel-vscode added "Secrets" (recorded 13 September), it went from #232 to #34–#35 on secrets, and on security, a word it removed, it left the first 1,000. pandaprog.claude-agents became "Claude Agent Map & Usage" on 16 September. It moved from #452 to #62 on claude usage and from #21 to about #220 on agents. For contrast, salilvnair.daakia added "REST" to its name on 14 September and read #80 before and #79–#80 after.

Check the counters#

Public counters cannot explain a position, but they help rule things out. Compare Marketplace installs and ratings for both extensions over the same days, and never treat a single day's difference as growth, because the Marketplace install count can fall. On theme, Dracula had about 10.96 million installs to One Dark's 7.34 million on 19 September, yet it sat one place behind on 12 of the 18 days. A higher total did not line up with a higher position. If you also publish to Open VSX, keep its download counter separate. Why Open VSX downloads look inflated explains why the two counters differ.

A step-by-step checklist#

  1. Write down the query, the registry, and the last date on which your position looked normal.
  2. Compare the size of the move with the jitter band for your starting position. If it is smaller, stop and watch.
  3. Wait for at least three more daily readings. Treat a swap that reverses as ordinary churn.
  4. Check every tracked query on the same dates, and note whether one moved or many.
  5. For both extensions, list display name, tag, description, category and publisher-name edits, with dates.
  6. List releases for both extensions in the same window.
  7. Check whether a new extension entered above you.
  8. Compare installs and ratings over matched dates, and note any missing readings.
  9. Write the result in temporal terms: "after", "in the same window", "no recorded change".
  10. If you make an edit of your own, change one thing and log the date before and after.
Four-step diagram: confirm the move is beyond jitter and held three days, check one query or many, list name, tag, text and release edits on both listings, then log it in temporal wording. Footnote: 11 of 17 durable top-10 Marketplace overtakes had no recorded edit or release
Confirm, scope, list and log. A dated change can be investigated without assigning it a causal effect.

An evidence log template#

Query:            ______________________   Registry: Marketplace
Your extension:   publisher.name ________   Competitor: publisher.name ________
Last normal day:  YYYY-MM-DD  position #___ (band ±___)
First moved day:  YYYY-MM-DD  position #___   Persisted through: YYYY-MM-DD
Other queries:    ___ moved the same way, ___ unchanged, ___ opposite
 
Window (D-3 to D):  Yours                      Competitor
  Display name      ________________________   ________________________
  Tags +/-          ________________________   ________________________
  Description       ________________________   ________________________
  Categories        ________________________   ________________________
  Releases          ________________________   ________________________
  Installs/ratings  ________________________   ________________________
  New entrants above: ______________________
 
Summary (temporal wording only):
  "In the same window as ____, position moved from #__ to #__ and held for __ days."
Next observation date: YYYY-MM-DD

The live demo puts these pieces side by side for a real extension: rank history per query, competitor positions, version markers, and a dated listing-change log. It is the same record this investigation draws on, with no signup.