VSXRank
Publisher guideData as of 22 September 2026

How to choose VS Code extension keywords: a worksheet with real rank data

Choose VS Code extension keywords with a five-step worksheet: relevance, how contested a phrase is, near-top-10 positions, competitor overlap and placement.

Yash Agarwal

Builds VSXRank · 7 min read

Relevant keyword phrases flow into a generic extension listing name, description, and keyword tags.

Choosing VS Code extension keywords is mostly a triage problem. You can list 30 keywords in package.json, but only a few phrases may match the searches most relevant to your extension, and where a phrase sits in the listing matters as much as whether it appears. This worksheet sorts candidate phrases by relevance, how contested each one is, how close you already are to the top 10, and which competitors share it. Then it places each survivor in the display name, the description, or the tags, using rank data we measured on both registries.

What Microsoft documents about VS Code extension keywords#

The extension manifest reference defines the fields a publisher controls:

  • displayName is the name shown on the Marketplace, and it must be unique there.
  • description is a short statement of what the extension is and does.
  • keywords is an array "to make it easier to find the extension". Those values are "included with other extension Tags on the Marketplace", and the list "is currently limited to 30 keywords".
  • categories must come from a fixed list, such as Linters, Formatters, Themes or Visualization.

The same page's Marketplace tips say the display name and description "are also used for text search in VS Code and having relevant keywords will help a lot." Publishing with more than 30 keywords fails with "You exceeded the number of allowed tags of 30" (Publishing Extensions). Users can also filter the Extensions view with tag: and category: (Extension Marketplace), so a tag counts even when nobody reaches it through free-text search.

Microsoft doesn't publish how those fields are weighted. A 2017 note from a Microsoft engineer ranks displayName above keywords above description and mentions a five-tag limit (microsoft/vscode-arduino #225); the documented limit is 30 today, so treat it as history.

Open VSX publishes its search code: its text query weights name and displayName at 5, tags at 3, namespace at 2 and description at 1, and the relevance sort multiplies that score by a precomputed relevance value (ElasticSearchService.java). On the Marketplace, what follows is our observation.

Where ranked listings carry the searched words#

On 21 September 2026 we checked every tracked search on both registries: 221 phrases with positions 1–1,000. For each ranked row we asked whether the listing carried every meaningful word of the search. We checked the display name, the tags and the short description separately. Matching is by word, with plain plurals folded, so "Visualizer" does not match "visualization".

Five-step keyword worksheet: relevant, contested, near the top 10, competitor overlap and placement, with dated Marketplace figures of 84.5% of top-10 display names carrying the searched words against 21.0% past position 300
Worksheet overview and display-name overlap in the dated 21 September 2026 sample; association, not a ranking formula.
Position bandMarketplace: display nameMarketplace: tagsOpen VSX: display nameOpen VSX: tagsOpen VSX: description
1–1084.5%59.3%60.5%65.4%75.7%
11–2081.2%55.0%45.3%61.8%71.4%
21–5078.8%54.4%32.1%63.3%64.1%
51–10070.5%55.5%19.8%61.1%53.1%
101–30045.8%59.4%11.6%50.9%41.1%
301–1,00021.0%54.6%6.0%34.2%26.9%

On the Marketplace, the display name separates the bands: 84.5% of top-10 rows against 21.0% past position 300. Tag matches are flat at 54–59% all the way down. Our 13 September study found 88% against 28% (Marketplace ranking and jitter). A week later the gap is the same shape. Open VSX looks different. Every field thins out with depth, and descriptions and tags hold up better than names near the top, although these overlap rates do not establish the contribution of each search weight.

These are associations: a strong extension may have a clear name and a good position for separate reasons.

Step 1: keep only phrases that describe the job#

List ten to twenty phrases a developer would type when they need your extension: the task ("csv viewer"), the technology ("jupyter"), the integration ("copilot") and your product name. Cut any phrase where a searcher who found you would be disappointed.

Step 2: measure how contested each phrase is#

The result count the Marketplace reports isn't a good measure of competition. On 21 September, open source copilot returned 9,797 results. Only 47 live Marketplace listings carried all three words anywhere in their name, tags or description. None carried all three in the display name. The search returns partial matches too.

Two numbers work better. First, count the listings that carry every word in the display name; VSXRank computes this nightly for each tracked phrase. Second, count how many of today's top 10 display names carry it. Across the 208 phrases our crawler seeds for itself on the Marketplace, the two numbers track each other closely:

Listings with every word in the display namePhrasesAverage top-10 names carrying the phrasePhrases where all 10 do
10 or fewer213.20
11–100469.033
101–1,0001219.396
More than 1,000209.717

Name counts use the catalog of 22 September; positions are from 21 September. On the Marketplace, 146 of those 208 phrases had a top 10 made entirely of named matches. A phrase like that has strong display-name overlap in this sample. It does not exclude listings without those words. When ten or fewer listings have the phrase in the name, more top-10 rows lack a name match; relevant tags and descriptions are worth checking too, without assuming an edit will improve position.

Open VSX is less crowded. The median phrase had 32 named listings there against 209 on the Marketplace, and only 21 of the 208 phrases had an all-named top 10.

Step 3: shortlist positions #11–20, then check the name#

Positions just outside the top 10 are the nearest targets, but few of them moved in within a week. We compared the same extension and phrase, across the 208 self-seeded phrases, on 14 and 21 September:

Starting position on 14 SeptPairsIn the top 10 on 21 SeptStill at #11–20
Marketplace #11–201,95244 (2.3%)1,795 (92.0%)
Open VSX #11–201,95038 (1.9%)1,733 (88.9%)

The top 10 held too: 97.2% of Marketplace top-10 pairs and 93.8% on Open VSX were still there a week later. Small moves inside #11–50 are mostly ordinary ranking jitter. So treat a #11–20 position as a place to act, not a place to wait.

Next, check whether the name is the gap. On Marketplace phrases where all ten top names carry the words, 1,443 of the 1,462 listings at #11–20 already carried them too. For those, the name is table stakes. It no longer tells the ranked listings apart. The 19 exceptions stand out. For visualization, only 16 Marketplace listings have the word in their display name, and the top 14 on 21 September were all among them. Data Wrangler sat at #15, followed further down by Debug Visualizer and SandDance for VSCode. Each carries the word in its tags, not its name. (Browse the whole Visualization category for context.)

Here's how that reads for one extension, Kilo Code, the extension behind our live demo, on 21 September:

Marketplace phrasePositionNamed listingsTop-10 names carrying itReading
open source copilot#200Uncontested in names; held
ai chat#11913Near miss, and "chat" isn't in the name
anthropic#12109Small named field, word absent from the name
copilot#1482010Word already in the name; the name won't separate it

The same display name ranked #2 for ai coding agent on the Marketplace and #67 on Open VSX that day. Pick phrases for each registry separately.

Step 4: check competitor overlap#

For each surviving phrase, list the extensions that rank for it and solve the same job. Two or three direct competitors in the top 20 suggest a phrase that matches the same use case; a top 10 of themes or unrelated tools marks a weaker one. Pin those competitors and compare shared phrases on matched dates, one registry at a time, as described in tracking an extension you don't own.

Step 5: place each phrase where it belongs#

Generic listing with one primary phrase in the display name, secondary phrases in the description and up to 30 tags.
Illustrative placement worksheet; this is a writing approach, not a ranking guarantee.
  • Display name. One primary phrase, readable as a product name. It must stay unique on the Marketplace, and every later rename resets what people recognise. Put a phrase here only if it's contested and central to the job. After our own rename, one tracked query moved from #32 to #2; that timing does not isolate the effect of the name edit.
  • Description. Two or three secondary phrases in a plain sentence that says what the extension does. Microsoft names it as a text-search field, and on Open VSX it's the field most often present near the top.
  • Keywords (tags). Up to 30. Use them for synonyms, integrations, file types and abbreviations, and for uncontested phrases where a tag alone may be enough. They also serve the tag: filter. Repeating a word doesn't make it more relevant.

The keyword worksheet#

Copy this into a sheet, one row per candidate phrase, per registry:

StepQuestionWhere to read itKeep the phrase if
1. RelevantWould a searcher who finds you be satisfied?Your own use casesYes, without qualification
2. ContestedHow many listings carry every word in the display name, and how many top-10 names do?Keyword coverage count, today's top 10You can match the field, or it's open (10 or fewer named listings)
3. NearWhere do you rank now, and does your name carry the words?Median position with sample rangeYou're at #11–50, or unranked on an open phrase
4. OverlapDo direct competitors rank for it?Pinned competitors, same date and registryTwo or more comparable extensions appear
5. PlacementName, description or tag?Steps 2–3You've recorded the placement and the date of the edit

Change one field at a time and keep the before-and-after positions with the date. A position that holds across several crawls tells you more than one good day.

The live demo runs this worksheet on Kilo Code: its keyword positions on both registries, named-listing counts for each phrase, and the competitors that share them.