HCPCS code lookup
Paste a claim's worth of supply and equipment codes. Each one comes back with what CMS says it is, how Medicare prices it, and whether it was valid on the date you are billing for.
8,769 procedure codes and 384 modifiers, straight from the CMS quarterly file. Nothing you paste leaves this page.
A code can be real, current and correct, and still tell you nothing
Of the 9,153 codes and modifiers CMS publishes, 8,000 carry a coverage status that decides nothing at all. C means carrier judgment. D means special coverage instructions apply, somewhere else, in a document this file does not contain. Neither is a yes, and a lookup that renders either as a tick is telling you something CMS did not say.
That is the honest shape of this data, and it is why this tool prints CMS's own wording for the coverage character instead of interpreting it. The three values that are decisions are the negative ones: 903 codes are not payable by Medicare, 97 are non-covered, and 153 are non-covered by statute, which is the one you cannot appeal your way out of.
The pricing methodology is the part people miss
Next to the coverage character sits a pricing indicator, and it is more useful than it looks. It does not give you a dollar amount, because no amount is in this file. It tells you which fee schedule the code is paid from and on what basis: national relative value units, the clinical lab fee schedule, a capped rental, an inexpensive and routinely purchased item, a drug, or not separately priced by Part B at all.
That is what explains why two supply codes that look interchangeable pay differently, and why a code you expected to be paid separately turned up bundled. A code priced 00, not separately priced by Part B, will never pay on its own line no matter how clean the rest of the claim is.
Discontinued does not mean wrong
1,341 of these codes have been discontinued, and they stay in the published file rather than disappearing from it. That is deliberate on CMS's part and it matters, because a claim for an old date of service is correct with the code that was current then.
So this tool asks for a date of service and treats the answer as a window rather than a yes or no. A code discontinued after 30 September is valid for a 30 September date and not for 1 October, and that one day is the whole difference. Where CMS names a replacement, and it does for 188 of them, the successor is shown beside the code.
Leave the date empty and you get the code's dates as facts, plus a line saying in words that nothing has been checked against a date of service. A check that did not happen is never rendered here as a check that passed.
What is not in this file, and why
CPT is absent, and this site did not remove it. HCPCS has two levels, and Level I is CPT, which the American Medical Association copyrights and licenses per organisation. CMS strips it out of the public-use file before publishing. The dental D series goes the same way, licensed by the American Dental Association as CDT, and so do the numeric modifiers 25, 59 and 26.
Counted against the published file rather than asserted: zero numeric codes, zero D codes, zero numeric modifiers. If you paste 99213 you will be told it is not a HCPCS Level II code, which is true, rather than left wondering whether the lookup failed.
The smaller fields, and the ones deliberately dropped
1,201 codes are flagged as approved for an ambulatory surgical centre. 72 carry a CLIA certification category, which says what a lab must be certified for before it can bill the code. 845 cite one of 115 CMS processing notes, and those notes are reproduced in full because they are usually the sentence that explains a denial.
Two columns in the source are not shown. The record layout gives a Berenson-Eggers type of service code and a CMS type of service code, and for each it names an external code table it does not include. Showing you an undecoded D1E would be worse than showing nothing, so those two are dropped at the point the data is built.
What changed on 1 October 2026
HCPCS updates every quarter, not once a year. This release adds 44 codes, discontinues 14 and rewords 12.
Discontinued after 30 September 2026
Valid for a date of service up to and including the day before 1 October 2026, and not after it.
- C8010 Percutaneous placement of permanent common carotid embolic protection device, including all system components and imaging guidance; bilateral
- C9310 Injection, leucovorin calcium (avyxa), 1 mg
- C9462 Injection, delafloxacin, 1 mg
- J0640 Injection, leucovorin calcium, per 50 mg
- J1941 Injection, furosemide (furoscix), 20 mg
- J1953 Injection, levetiracetam, 10 mg
- J7514 Mycophenolate mofetil (myhibbin), oral suspension, 100 mg
- J7517 Mycophenolate mofetil, oral, 250 mg
- J7519 Injection, mycophenolate mofetil, 10 mg
- J7528 Mycophenolate mofetil, for suspension, oral, 100 mg
- J9181 Injection, etoposide, 10 mg
- J9190 Injection, fluorouracil, 500 mg
- J9352 Injection, trabectedin, 0.1 mg
- L8696 Antenna (external) for use with implantable diaphragmatic/phrenic nerve stimulation device, replacement, each
Added, effective 1 October 2026
Not valid for a date of service before 1 October 2026, however clean the rest of the claim is.
- A2046 Dermisphere hdrt, per square centimeter (add-on, list separately in addition to primary procedure)
- A2047 Lacertamatrix, per square centimeter (add-on, list separately in addition to primary procedure)
- A2048 Puraply mz, per milligram
- A2049 Theracor, per square centimeter (add-on, list separately in addition to primary procedure)
- A2050 Fibrillar collagen wound dressing, per milligram
- A4228 Supplies for maintenance of non-insulin, device-drug combination infusion catheter, per week
- A6614 Supplies and accessories for use with an external ocular negative pressure pump, any type, per month
- A9613 Piflufolastat f 18 (pylarify truvu), diagnostic, 1 millicurie
- C9311 Injection, eplontersen, 1 mg (code may be used for medicare when drug administered under the direct supervision of a physician, not for use when drug is self administered)
- C9312 Injection, trabectedin (apotex), not therapeutically equivalent to j9362, 0.01 mg
- C9313 Injection, pivekimab sunirine-pvzy, 0.01 mg
- E0788 Ambulatory infusion pump, specific device-drug combination, single or multiple channels, electric or battery operated, with administrative equipment, worn by patient
- E2403 External ocular negative pressure pump, electric
- G0685 Algorithm-based assessment of likelihood of autism spectrum disorder (asd), derived from validated analysis of eye-gaze data or other technology
- J0643 Injection, leucovorin calcium, not otherwise specified, 1 mg
- J0644 Injection, leucovorin calcium (avyxa), 1 mg
- J0871 Injection, daptomycin (endo), not therapeutically equivalent to j0878, 1 mg
- J1757 Injection, tividenofusp alfa-eknm, 1 mg
- J1818 Injection, pegzilarginase-nbln, 0.05 mg
- J1946 Injection, furosemide (lasix onyu), 1 mg
- J1947 Injection, furosemide (furoscix), 1 mg
- J1957 Injection, levetiracetam, 5 mg
- J1958 Injection, levetiracetam in sodium chloride, 5 mg
- J3268 Injection, delafloxacin, 1 mg
- J3406 Injection, omidubicel-onlv, per therapeutic dose
- J7524 Mycophenolate mofetil, oral, 5 mg
- J7526 Injection, mycophenolate mofetil, 5 mg
- J7529 Mycophenolate mofetil, for suspension, oral, 5 mg
- J7530 Mycophenolate mofetil (myhibbin), oral suspension, 5 mg
- J7531 Prednisolone sodium phosphate, orally disintegrating tablet, 1 mg
- J9066 Injection, bendamustine hydrochloride (avyxa), 1 mg
- J9186 Injection, etoposide (avyxa), 1 mg
- J9187 Injection, etoposide, 1 mg
- J9191 Injection, fluorouracil (avyxa), 10 mg
- J9192 Injection, fluorouracil, 10 mg
- J9362 Injection, trabectedin, 0.01 mg
- L1330 Thoracic orthosis, sternal and/or sternocostal compression, may include anterior and/or posterior pads, panels, with or without frame, prefabricated, includes fitting and adjustment
- L1972 Ankle foot orthosis, plastic or other material with ankle joint, with or without dorsiflexion assist, prefabricated, off-the shelf
- L8697 External accessory for use with implantable phrenic nerve stimulation device, replacement, each
- Q4207 Carbon life, per square centimeter (add-on, list separately in addition to primary procedure)
- Q4223 Dermabind sl optic, per square centimeter (add-on, list separately in addition to primary procedure)
- Q4243 Amchomatrix, per square centimeter (add-on, list separately in addition to primary procedure)
- Q5172 Injection, filgrastim-laha (filkri), biosimilar, 1 microgram
- Q5173 Injection, denosumab-adet (ponlimsi), biosimilar, 1 mg
Reworded
Same code, same validity, new long description. Change in long description of procedure or modifier code is CMS's own wording for this, and it is the change most likely to matter to a policy that quotes the description.
- A9595 Piflufolastat f 18 (pylarify), diagnostic, 1 millicurie
- C1982 Catheter, pressure-generating, (e.g., one-way valve or occlusion balloon, intermittently or temporarily occluding)
- C8004 Simulation angiogram with use of a pressure-generating catheter (e.g., one-way valve or occlusion balloon, intermittently or temporarily occluding), inclusive of all radiological supervision and interpretation, intraprocedural roadmapping, and imaging guidance necessary to complete the angiogram, for subsequent therapeutic radioembolization of tumors
- C9797 Vascular embolization or occlusion procedure with use of a pressure-generating catheter (e.g., one-way valve or occlusion balloon, intermittently or temporarily occluding), inclusive of all radiological supervision and interpretation, intraprocedural roadmapping, and imaging guidance necessary to complete the intervention; for tumors, organ ischemia, or infarction
- C9812 Echogenic and/or nerve stimulator-guided nerve block needles (e.g. sonoplex, sonoblock, sonotap, stimuplex), non-opioid medical device (must be a qualifying medicare non-opioid medical device for post-surgical pain relief in accordance with section 4135 of the caa, 2023)
- J3300 Injection, triamcinolone acetonide (triesence), preservative free, 1 mg
- J9033 Injection, bendamustine hydrochloride, not otherwise specified, 1 mg
- L1971 Ankle foot orthosis, plastic or other material with ankle joint, with or without dorsiflexion assist, prefabricated, item that has been trimmed, bent, molded, assembled, or otherwise customized to fit a specific patient by an individual with expertise
- L8030 Breast prosthesis, silicone or equal, without integral adhesive, any type
- L8031 Breast prosthesis, silicone or equal, with integral adhesive, any type
- L8035 Custom breast prosthesis, post mastectomy, molded to patient model, any type
- S0169 Calcitrol, oral, 0.25 microgram
Where this stops being reliable
This is a reference lookup, not a coverage determination and not billing advice. It tells you what CMS published about a code. It does not know your local coverage determination, your payer's own policy, the documentation in the chart, or whether the item was medically necessary for this patient, and every one of those can deny a perfectly valid code.
It also carries no money. CMS publishes no dollar amount in this file, so nothing here is a fee, an allowable or an expected payment.
For what comes back after a denial, the CARC and RARC decoder starts from the group code rather than the reason code, which is what decides whether the adjustment is a write-off or billable to the patient.
Questions billers actually ask
Is this code covered by Medicare?
This file cannot tell you that, and neither can any other lookup, which is worth knowing before you rely on one that implies otherwise.
CMS publishes a single coverage character on every code, and it has five values: C, carrier judgment; D, special coverage instructions apply; I, not payable by medicare; M, non-covered by medicare; S, non-covered by medicare statute. Only two of those are decisions. The other three defer: C hands it to the contractor's judgement and D points at a policy document somewhere else. Between them they account for 8,000 of the 9,153 entries in the file.
So the honest answer for most codes is that coverage depends on the local coverage determination, the documentation and the patient. The tool prints CMS's own word for the status and stops there rather than turning "carrier judgment" into a green tick.
Why does the date of service change the answer?
Because HCPCS validity is a property of the date of service, not of today, and 1,341 of the codes in this file have already been discontinued.
A claim for a 2024 date of service is correct with a code that was discontinued in 2024. A lookup that flatly calls that code invalid is wrong, and it is wrong in the direction that makes you change a claim that was right.
Give a date of service and each code gets a verdict against it. Leave it empty and you get the code's own dates and an explicit line saying nothing was checked against a date, because a check that did not happen must not look like one that passed.
Where is CPT? I pasted 99213 and got nothing.
CPT is not in this file, and it was not removed by this site.
HCPCS has two levels. Level I is CPT, which the American Medical Association copyrights and licenses per organisation. Level II is the alphanumeric set CMS maintains. CMS strips Level I out of the public-use file before publishing it, so a five-digit numeric code simply is not there to look up. The same goes for the dental D series, whose descriptors the ADA licenses as CDT, and for the numeric modifiers 25, 59 and 26.
That is checkable rather than a claim: counted against the published file, it contains zero numeric codes, zero D codes and zero numeric modifiers.
A code says discontinued. What do I bill instead?
Sometimes CMS says, and sometimes it does not.
188 of the 1,341 discontinued codes carry a cross reference to a successor, and where one exists this tool shows it. The rest carry nothing, because CMS deleted the code without naming a replacement, usually because the service moved into a different code family rather than into one specific code.
Two cases to watch. A cross reference sometimes points at a CPT code, in which case you get the number and no description, for the licensing reason above. And six cross references in the current file point at codes old enough to have left it altogether, so the tool says the code is named but not published rather than showing you a dead end.
What changed on the last quarterly update?
On 1 October 2026: 44 codes added, 14 discontinued and 12 reworded. The full list is further down this page.
HCPCS updates quarterly, unlike ICD-10-CM which changes once a year on 1 October. A code added this quarter is not valid for a date of service before it, and a code discontinued this quarter stays valid right up to the day before. Both of those are what the date of service field is for.
Does it show what Medicare pays?
No, and nothing in this file does. CMS publishes a pricing methodology here, not an amount: whether a code is priced from national relative value units, as a capped rental, as a drug, by the contractor, or not separately priced at all.
That is genuinely useful, because the methodology tells you which fee schedule to look in and why two similar-looking supply codes pay differently. But the dollar figures live in the DMEPOS and physician fee schedules, which are separate files, and this tool will not invent one.
I pasted a whole 837 line and got extra results.
Expected, and it cannot really be fixed. Every two-character token is a candidate modifier, and an EDI segment is full of two-character qualifiers.
HC, the product and service identifier qualifier, and UN, the unit basis, are both published HCPCS modifiers in their own right. Nothing reading a pasted line can tell the qualifier from the modifier, because they are the same two letters in a segment this tool does not attempt to parse.
Reporting them is the lesser error. Filtering out tokens that resolve to real modifiers would also hide a genuine KX sitting in the same line, and a missing result is worse than an extra one.
Is my data sent anywhere?
No. What you paste never leaves your browser.
The code set ships as 394 static files on this site and the page fetches only the few it needs for the codes you typed, keyed on the first three characters. The matching happens on your machine. There is no server here to send anything to.
How current is this, and where is it from?
Directly from the Centers for Medicare and Medicaid Services, Alpha-Numeric HCPCS file, HCPC2026_OCT_ANWEB.txt, taken 2026-09-03. It covers 8,769 procedure codes and 384 modifiers.
Nothing is transcribed by hand. A script parses the published fixed-width file and refuses to build if it meets a value it cannot explain, so a quarter that introduces a new coverage or pricing code fails loudly rather than rendering a bare character on this page.
HCPCS Level II is maintained by CMS and is a work of the United States federal government, not subject to copyright. That is why this tool can exist where a CPT equivalent cannot.
Where these figures come from
Codes, descriptions, coverage status and pricing indicators are taken from the CMS HCPCS Level II release file HCPC2026_OCT_ANWEB.txt, read on 2026-09-03 from the quarterly update CMS publishes. Nothing here is retyped from a secondary source.
The HCPCS Level II code set is a US government work and carries no copyright, which is why the descriptions appear verbatim. CPT, which is Level I, is copyrighted by the American Medical Association, so no CPT code text appears anywhere on this site. A code beginning with a digit is Level I, and this file contains none of them.
Verify against the CMS file above and against your payer's own policy before billing. If an entry here disagrees with either, tell me and it gets fixed.