1. FixRFID.me

    Updating npm packages

    All npm packages updated to latest version to ensure security and maintainability.

    Read more →
  2. FixRFID.me

    Broken download button now functioning

    During the unified design control refactor, the download svg/png/pdf functionality was incorrectly ported over, this has now been reimplemented.

    Read more →
  3. DocsRFID.me

    Broken glossary links replaced with real references

    Sixteen previously missing barcode destinations now have substantive glossary entries with structure, use cases, printer implementations, and primary specifications where available. Ambiguous SGTIN and SSCC links now point to their precise 96-bit encoding pages, and stale external destinations were refreshed.

    Read more →
  4. DocsRFID.me

    Concise site map for cooperative AI tools

    A new llms.txt file gives cooperative AI tools a compact map of RFID.me’s guides, glossary, standards, printer references, downloadable command data, interactive tools, sitemap, editorial policy, reuse guidance, and correction channels.

    Read more →
  5. DocsRFID.me

    Downloadable printer-command reference data

    Every ZPL, SBPL, TSPL, and DPL reference index now links to deterministic JSON and Markdown exports generated directly from the same engine command arrays as the human-readable pages.

    Read more →
  6. DocsRFID.me

    Explicit access policy for AI search crawlers

    RFID.me now explicitly permits OpenAI search and user-fetch crawlers, GPTBot, Perplexity, Anthropic, Google Extended, Applebot Extended, and Common Crawl in robots.txt while retaining the site-wide crawler rule and canonical sitemap.

    Read more →
  7. DocsRFID.me

    New internal links are checked before release

    The production build now checks every internal link emitted by all sitemap pages. Unexpected missing targets block CI, while the existing glossary gaps are individually tracked and explicitly allowlisted until their pages or links are corrected.

    Read more →
  8. DocsRFID.me

    Sitemap-wide SEO regression protection

    Every sitemap page is now checked in CI for a successful non-redirecting response, one canonical title/description/H1 set, connected parseable JSON-LD, canonical URL parity, social images, indexability, and route-specific update dates. Metadata drift now blocks a merge instead of reaching production silently.

    Read more →
  9. DocsRFID.me

    Consistent social and entity metadata site-wide

    Every indexable RFID.me page now uses the same canonical URL, social-card metadata, default image, and connected website/organization entity graph. Hardware directories, manufacturer and vendor profiles, DPL glossary content, and all four interactive printer-language playgrounds now match the shared SEO contract.

    Read more →
  10. DocsRFID.me

    Machine-readable indexes for guides and references

    Guide, glossary, standards, software, vendor, and printer-command indexes now expose connected CollectionPage and ItemList metadata generated from the same arrays as their visible cards. This gives search engines and AI agents an ordered, canonical map of each collection without maintaining a second list.

    Read more →
  11. DocsRFID.me

    Trust and update metadata across the technical corpus

    Static glossary explainers, printer-command pages, and the label-software comparison now share RFID.me’s enriched article metadata and visible repository-derived update history. Navigational command indexes use webpage metadata instead of being misclassified as articles.

    Read more →
  12. DocsRFID.me

    Update history on standards and hardware references

    EPC scheme, standards, antenna, reader, and tag reference pages now show their repository-derived last-updated date and link to RFID.me’s editorial policy. Their article metadata uses the same route record as the sitemap; standards and EPC schemes also connect directly to their official primary specification.

    Read more →
  13. DocsRFID.me

    Editorial policy and source-backed guide metadata

    RFID.me now publishes an editorial, sourcing, update-date, and corrections policy. Every in-depth guide shows its repository-derived update date and organization byline, links the policy, and exposes connected article metadata; the specialist guides also list the primary standards or original paper behind their technical claims.

    Read more →
  14. DocsRFID.me

    RFID fundamentals guide now shows its sources and update history

    The flagship “What is RFID?” guide now displays its genuine repository-derived last-updated date and a dedicated Sources & standards section covering EPC Gen2, UHF, contactless-card, vicinity-card, and animal-identification specifications.

    Read more →
  15. DocsRFID.me

    Practical guides for the Label Designer and Barcode Generator

    The Label Designer and Barcode Generator pages now include browser-independent instructions, limitations, examples, troubleshooting advice, and direct links to the relevant printer-language and barcode references. The guides clarify what to verify on real hardware before putting generated labels into production.

    Read more →
  16. DocsRFID.me

    Label Converter guide and troubleshooting notes

    The Label Converter page now explains how ZPL, SBPL, TSPL and DPL translation works, what the Beta supports, how to verify converted output, and why printer-specific commands or previews can differ. A worked ZPL-to-TSPL example and direct links to each command reference make it easier to move from conversion to implementation.

    Read more →
  17. FeatureRFID.me

    Drag-and-drop Designer in the playgrounds + a dedicated Label Designer preview

    The /learn playgrounds (ZPL, SBPL, TSPL, DPL) now have a drag-and-drop "Designer" tab beside Source: build a label visually with the element palette on the left and the element-properties panel on the right, and your visual edits round-trip straight back into the source and the live preview. The Label Designer (/tools/label-designer) now shows its live preview in its own always-visible panel next to the editor (instead of a Preview tab); its command reference gained the same category filter chips and reference link the playgrounds have, and its Examples list moved into the left rail — one consistent layout across both tools.

    Read more →
  18. FeatureRFID.me

    Playgrounds rebuilt on the unified design control

    The ZPL, SBPL, TSPL and DPL playgrounds (/learn/…) now run on the same Universal Design Control as the Barcode Generator, Label Converter and Label Designer: a source editor on the left with Commands, Examples and Tutorials rails, a Local Folder for your images, and a live rendered preview on the right with its own Printer File System. Loading an example, command or tutorial opens it as a new page tab so you can keep several open at once, and the Host/Printer terminals and ZPL "send to printer" (^GF / ~DG / ^XG recall) workflow are all still here.

    Read more →
  19. FeatureRFID.me

    Label Designer rebuilt on the unified design control

    The Label Designer (/tools/label-designer) now runs on the same Universal Design Control as the Barcode Generator and Label Converter. Design visually on the WYSIWYG canvas with the element palette and properties panels, flip to a live rendered preview, or drop into an editable Source tab with full syntax highlighting, hover tooltips and completions — and switch that source between ZPL, SBPL, TSPL and DPL from its own dropdown. Loading an example or command from the reference rail now opens it as a new page tab, so you can keep several labels open at once.

    Read more →
  20. FeatureRFID.me

    Label Converter rebuilt on the unified design control

    The Label Converter (/tools/label-convert) now runs on the same Universal Design Control as the Barcode Generator and Label Designer, in a 2×2 layout: an editable source and an editable target on top, with a live rendered preview under each. Edit either side — or switch its language from its own dropdown — and the other side regenerates automatically. Convert between ZPL, SBPL, TSPL and DPL with full syntax highlighting, hover tooltips and completions on both code panes.

    Read more →
  21. FeatureDPL

    Syntax-highlighted code on the DPL command reference

    The Example on each DPL command reference page (/reference/dpl/…) now renders in an interactive, read-only code control with syntax highlighting and hover tooltips — the same in-editor context the playground gives — instead of a flat code block. The example text stays server-rendered so it remains fully indexable; the highlighting is a client-side enhancement. Rolling out to the ZPL, SBPL and TSPL references next.

    Read more →
  22. FeatureRFID.me

    Jump from a playground to the Visual Designer

    Every playground toolbar now has an "Open in Visual Designer →" link, next to What's new and Commands. It takes you straight to the drag-and-drop Label Designer at /tools/label-designer — design the same label visually instead of writing the code by hand.

    Read more →
  23. FeatureRFID.me

    New tool: Label Designer (drag-and-drop)

    A new visual Label Designer at /tools/label-designer lets you drag text, barcodes, QR codes, shapes and images onto a label canvas and export native ZPL, SBPL, TSPL and DPL code live — the reverse of the playgrounds. It works directly on the canonical label model (label-schema), so the preview and all four code panels stay in sync as you design. Initial draft: all 11 element kinds, drag/resize/keyboard editing, and local JSON import/export.

    Read more →
  24. FixRFID.me

    Barcodes that used to render blank now show real bars

    A render-parity sweep fixed commands that were marked supported but drew only an empty placeholder. DPL now renders UPC-A, UPC-E, EAN-8, HIBC and Codabar; SBPL renders Code 39 (ESC+B / ESC+D) and GS1-128 (ESC+BI); and TSPL REVERSE (white-on-black) and BOX show up in the preview. Powered by new encoders in epc-parser 1.16, the shared symbology dispatch in label-schema 0.9, and engine updates zpl-engine 0.40, sbpl-engine 0.32, tspl-engine 0.33 and dpl-engine 0.22 — each engine now carries a CI render-parity guard, so a "supported" command can never silently render nothing again.

  25. FixRFID.me

    Whole-label mirror & direction now render

    Commands that flip the whole label now take effect in the preview: ZPL ^PMY mirrors the label horizontally; TSPL DIRECTION 1 prints it rotated 180° (the standard fix for an upside-down label) and DIRECTION n,1 mirrors it; DPL M1 mirrors it. Powered by a new mirror transform in label-schema 0.8 plus zpl-engine 0.39, tspl-engine 0.32, and dpl-engine 0.21. (SBPL has no whole-label flip command — its rotation is per-field.)

  26. FixZPL

    ^PO and ^LR now actually render

    ^PO (Print Orientation) and ^LR (Label Reverse) were listed as supported but did nothing. They now take effect in the preview: ^POI flips the entire label 180° (handy when the stock feeds the wrong way round), and ^LRY prints the whole label white-on-black. Powered by zpl-engine 0.38 (the ^PO/^LR commands are wired through to the canonical label) and label-schema 0.7 (the shared renderer applies the flip and colour inversion).

  27. FeatureZPL

    New example: Stored graphic recall (~DG/^XG)

    A new one-click entry in the ZPL Examples dropdown demonstrates the upload-once / recall-per-label graphic workflow with no file needed: it downloads a small logo with ~DG, then recalls it twice with ^XG — at 1x and 4x magnification — so you see two rendered graphics in the preview. A worked companion to the "Send to printer" feature.

  28. FeatureZPL

    Send to printer now writes the ~DG transfer and ^XG recall for you

    Picking "Send to printer (~DG)" on an image is now one click to a rendered label: alongside storing the .GRF, it prints the real ~DGR:<NAME>.GRF download command on the Host Terminal (the wire transfer a printer actually receives) and drops the matching ^XGR:<NAME>.GRF,1,1 recall into your source before ^XZ, then flips to the Source tab so the graphic renders in the preview straight away. No more hand-typing ^XG to find out whether it worked — the upload-once / recall-per-label workflow demonstrates itself.

  29. FeatureZPL

    Send images to the printer and recall them with ^XG

    Pick "Send to printer (~DG)" from an image's ⋯ menu in the Local Folder to store it as a .GRF in the Printer File System panel — then recall it in your label with ^XGR:<NAME>.GRF,1,1 (with mx/my magnification) and it renders live in the preview, just like a real printer. A ~DG in your source shows up in the panel too, and recalling a graphic that isn't there warns you. Powered by zpl-engine 0.37 (~DG/^XG graphic store) and 0.36 (:Z64:/:B64: ^GF decoding).

  30. FeatureZPL

    Insert images into your label as ^GF graphics

    The Local Folder panel grew an image actions menu (⋯ button or right-click): convert any image to 1-bit black & white, copy it as a ^GFA command (ASCII hex or Z64 for real printers), or insert it straight into your label source where it renders live in the preview. Images are auto-scaled to 800 px wide.

  31. FixZPL

    ZPL ^FX comments no longer flag the next command

    A `^FX` comment used to make the command on the following line warn "Unknown command: ^". The ZPL engine (0.35.1) now treats `^FX` as an inline comment that stops at the next caret, so commented labels parse cleanly with no spurious warnings.

  32. FeatureRFID.me

    Download preview as SVG, PNG, or PDF

    The download button on the playground preview, Label Convert source/target panes, and the Barcode Generator is now a split button — click for SVG (default), open the chevron to pick PNG or PDF. PDFs are vector and sized to the label's physical dimensions.

  33. EngineRFID.me

    Engine updates: ZPL 0.35, TSPL 0.31, SBPL 0.31, DPL 0.20

    All four printer-language engines have been updated with the latest open-source releases. Includes improved command coverage, better error recovery, and strict TypeScript throughout.

  34. FixDPL

    DPL command-reference examples now render correctly

    All 17 DPL command-reference examples are now wrapped in complete label blocks, so every "Load example" button in the DPL playground command panel produces a visible preview instead of a blank label.

  35. EngineDPL

    DPL command panel: all 10 barcode types now listed

    The DPL playground command panel previously showed only 3 barcode types (Code 39, Code 128, EAN-13) even though the engine rendered 10. Now all 10 are documented with syntax, parameters, and examples: UPC-A, UPC-E, Interleaved 2 of 5, EAN-8, HIBC, Codabar, and Code 93 join the original three.

  36. FeatureRFID.me

    CJK / International text support

    All four playgrounds now render Chinese, Japanese, and Korean characters natively. DPL gains font 9 extended format support (the scalable-font + charset-code header used by BarTender for international text). Encoding commands are now tracked: ZPL ^CI, TSPL CODEPAGE, and DPL y (font/charset selection) emit diagnostics in the preview. A new "International Text" example in every playground demonstrates mixed-script labels.

  37. FeatureRFID.me

    Barcode Generator: wider native coverage + Code 11 fallback path

    Follow-up to the initial Barcode Generator ship earlier today. SBPL now natively emits 9 more 1D symbologies (Code 39, Code 93, EAN-13/EAN-8, UPC-A/UPC-E, I2of5, Codabar, Code 11) on top of the original Code 128 — so the SBPL tab in the tool produces real native `ESC+B`/`BC`/`BI` commands for almost every symbology in the picker. Code 11 also lights up in TSPL and DPL via a new `fallback (lines)` path — those languages have no native Code 11 command, but the tool draws the barcode from each language's native box/line-draw primitives (TSPL `BOX`, DPL X-type-letter format records). Output is fully scannable, vector-perfect at any DPI. Added Code 11 to the symbology picker and a yellow note on fallback cards explaining why the source is longer than a native command would be.

  38. FeatureRFID.me

    Barcode Generator tool — any barcode, any printer language

    New tool under **Tools → Barcode Generator** (`/tools/barcode-generator/`). Pick a symbology (Code 128, GS1-128, EAN-13, UPC-A, Code 39, Code 93, I2of5, QR, DataMatrix, PDF417, Aztec), type your data, tweak the params — see a live SVG preview on the right, and the equivalent printer source in ZPL, SBPL, TSPL, and DPL below. Each language tab carries a `native ✓` / `fallback ⚠ (boxes)` / `fallback ⚠ (raster)` badge — when a printer language has no native command for the symbology, the tool draws the barcode from primitive box/bitmap commands (the "UPL — Universal Printer Language" model: any barcode in any language, natively where possible, primitive-based fallback where not). A small PoC for the future drag-and-drop WYSIWYG label editor that proves the canonical-schema → per-language emission path end-to-end.

  39. FeatureRFID.me

    Playgrounds: Host + Printer terminal panes - simulated serial round-trip

    Every playground (ZPL / SBPL / TSPL / DPL) now has a dark-themed **command terminal** docked at the bottom of each side. The **left (host) terminal** has a single-line input with the same CodeMirror autocomplete, hover tooltips, and parameter hints as the source editor - type a command, press Enter to send. The **right (printer) terminal** is read-only and shows what the simulated printer "received" and what it "transmitted back". Each send fires a simulated round-trip: command echoes on both sides, then a stub response (parser-derived `OK`, `OK (warn: ...)`, or `ERR ...`) lands ~180 ms later on both sides too. Up/down arrow recalls input history. **Collapsing is independent per side**: the host collapses to a single-line header **with the input still visible** so you can keep typing; the printer collapses to a 30 px header. An inline 🚧 MOTD at the top of each terminal flags the WIP nature - response generation is currently a parser stub, language-aware mock responses (e.g. real `~HS` status payloads for ZPL) and send-to-printer integration with the print service are the next steps.

  40. FixDPL

    DPL editor: parameter hint highlights the correct field as you type

    Follow-up to the 2026-05-22 hover-tooltip ship. The parameter-hint tooltip (the one that appears as you type inside a DPL field record) was highlighting the wrong field by 2 positions - cursor on the width-multiplier column highlighted Rotation, cursor on the height-multiplier column highlighted Font, and so on for every following field. Fixed in `@rfid-me/[email protected]`. Cursor at column 1 now correctly highlights `R` (rotation), column 3 highlights `w` (width mult), column 8 highlights `rrrr` (row), column 16+ highlights `DATA` - the mapping now matches the visual breakdown the hover tooltip already showed.

  41. FixDPL

    DPL editor: hover tooltips now work on field records

    The DPL playground editor (`/learn/dpl/`) was silently dropping hover tooltips on ~90% of source lines - the field records like `1X1100000400010L350002` or `122300000150025Shipping Label` that make up most DPL content. Fixed in `@rfid-me/[email protected]`. Hovering anywhere on a line now identifies it (system command / label command / text field / barcode field / drawing element) and for text/barcode field records decodes the 15-char DPL header into labelled positions: rotation (0°/90°/180°/270°), record type, width mult, height mult, eee (bar height for barcodes), row, col, data. Single-char commands like `D11` or `Q0001` no longer require the mouse to land precisely on the code character - hover anywhere on the line works.

  42. FeatureRFID.me

    Playgrounds: Printer File System tab - per-language on-board storage emulation

    The Preview pane in every playground now has a sibling **Printer File System** tab next to Preview. Same component as Local Folder (drag-and-drop, folders, breadcrumb), but each printer language gets its own isolated store - matching real-life printer behaviour where on-board storage is per-device. Files added to the ZPL printer don't appear on TSPL, SBPL, or DPL when you switch playgrounds. A 🚧 work-in-progress banner (independently dismissable from the Local Folder one) flags that the simulated printer doesn't yet read from this store at preview time. Coming soon: send-to-printer (transfer a file from Local Folder to the printer), drive-letter conventions for languages that have them (ZPL `R:` / `E:` / `B:`), and renderer integration (commands like `PUTBMP "LOGO.BMP"` resolve images from here at preview time).

  43. FeatureRFID.me

    Playgrounds: Local Folder - drop fonts, logos, and printer files into your browser

    Every playground (TSPL / ZPL / SBPL / DPL) now has a **Local Folder** tab in the source pane (next to the language source title). Drop or browse to add images (PNG / JPG / GIF / BMP / WEBP / SVG / PCX), fonts (TTF / OTF / WOFF / WOFF2 / BDF), or pre-converted printer files (GRF). **Folders are first-class**: create them with `+ New folder`, click a folder to enter it, navigate with the breadcrumb (`Home › fonts › seasonal`), delete empty folders with the × button. Files are stored in your browser via IndexedDB - they never leave your device, and they persist across reloads. A single shared shelf serves all four playgrounds, so a logo you add in TSPL is also there when you switch to ZPL. Per-file size cap is 10 MB; each file has download + delete actions. A 🚧 work-in-progress banner (dismissable) flags that files don't yet plug into the label preview - that integration is next. Coming soon: per-language "Insert reference" (drop a `PUTBMP "LOGO.BMP"` into the source from a file), built-in format conversion (PNG → BMP/PCX/GRF with monochrome dithering), and a sibling "Printer" panel that uses the same component to emulate the printer's on-board file system (so you can `send` a file from Local Folder to the printer and reference it from your label source).

  44. EngineTSPL

    TSPL: 13 new reference pages - RFID Gen2 sub-actions + SET sub-key backlog cleared

    Three more TSPL engine releases land. **RFID Gen2 typed sub-actions (#61–#65)**: 5 new pages - `/reference/tspl/rfid-read`, `/rfid-write`, `/rfid-lock`, `/rfid-kill`, `/rfid-permalock`. ⚠️ `RFID KILL` leads with "permanently and irreversibly disables the tag" and `RFID PERMALOCK` leads with "irreversibly locks `<bank>` - cannot be unlocked again". RFID LOCK exposes the 4-value Gen2 lock-policy enum (0 unlocked / 1 locked / 2 permanently-unlocked / 3 permanently-locked). Engine adds typed fields (bank/offset/length/data/password/killPassword/policy) on RfidElement plus a Gen2-spec diagnostic when KILL uses a zero kill-password. **SET sub-key batch (#90–#97)**: 8 new pages - `/reference/tspl/set-counter`, `/set-partial-cutter`, `/set-back`, `/set-key1`, `/set-key2`, `/set-rewind`, `/set-printkey`, `/set-striper` (alias of SET TEAR). SET parent now lists all 13 sub-actions in its value table. **Cat 9 Diagnostics (#47/#48)**: SELFTEST and INITIALPRINTER got polished plainEnglish - INITIALPRINTER now surfaces the destructive-irreversible warning and notes the FEED-during-power-on equivalent. **Playground**: `/learn/tspl` highlights all 13 SET sub-actions correctly, including PARTIAL_CUTTER and KEY1/KEY2 (a codemirror tokenizer bugfix landed in 0.10.0 - previously these split mid-word). `SET GAP` stays out - tracked separately on the engine side as a lexer-mode design decision.

  45. EngineTSPL

    TSPL: SET dispatcher + 8 new top-level command pages (Category 3 complete)

    TSPL command reference adds the full Category 3 audit - 9 net-new pages and 7 substantially-updated pages from tspl-engine 0.23.0 / 0.24.0 / 0.25.0. **SET dispatcher refactor**: SET is now a sub-action dispatcher with 5 new sub-key pages (`/reference/tspl/set-peel`, `/reference/tspl/set-tear`, `/reference/tspl/set-cutter`, `/reference/tspl/set-head`, `/reference/tspl/set-ribbon`). SET CUTTER documents the OFF/BATCH/<pieces> variants; SET HEAD surfaces a "do not disable in production" safety note; SET RIBBON flags its non-persistent-across-reboot semantics. **4 new top-level commands**: `/reference/tspl/shift` (vertical translate with real SVG rendering - `supported: true`), `/reference/tspl/limitfeed` (calibration feed cap, inch/mm forms), `/reference/tspl/country` (22-entry country-code table covering 001 USA → 358 Finnish), `/reference/tspl/sound` (level 0–9 + interval 1–4095, chainable for tunes). **Polished existing entries**: BLINE, BACKFEED (with TSPL/TSPL2 BACKUP alias), FORMFEED, HOME (with SIZE+GAP prerequisite), CODEPAGE (with the full 25-entry codepage value list across 7-bit national / 8-bit DOS / Windows families, default 437 at power-on). ⚠️ **OFFSET correction**: the old entry called it "Horizontal Offset" - that's wrong per TSPL2 PG §OFFSET p9 (it's selective extra label-feeding length for peel-off/cutter modes). The new entry leads with this correction so docs readers don't repeat the mislabel. The `/learn/tspl` playground also highlights SET sub-actions and the 4 new keywords correctly.

  46. EngineTSPL

    TSPL: BT and WLAN command reference pages added (12 new pages)

    The TSPL reference now covers the Bluetooth and Wi-Fi configuration command families introduced in tspl-engine 0.22.0. New pages: `/reference/tspl/bt`, `/reference/tspl/bt-name`, `/reference/tspl/bt-pin` (Bluetooth - pairing PIN page carries a credential warning, do not commit PSK/PIN values to public repos); `/reference/tspl/wlan`, `/reference/tspl/wlan-ssid`, `/reference/tspl/wlan-psk`, `/reference/tspl/wlan-encryption` (OPEN/WEP/WPA/WPA2/WPA3 mode table), `/reference/tspl/wlan-ip`, `/reference/tspl/wlan-dhcp` (ON/OFF), `/reference/tspl/wlan-gateway`, `/reference/tspl/wlan-netmask`, `/reference/tspl/wlan-dns` - each surfacing per-model TSC firmware-addendum syntax. The `/learn/tspl` playground also highlights BT and WLAN as command keywords and their sub-actions (NAME/PIN, SSID/PSK/ENCRYPTION/IP/DHCP/GATEWAY/NETMASK/DNS) as constants.

  47. DocsRFID.me

    GS1 DataBar glossary: encoder reference section added

    The `/glossary/gs1-databar/` page now includes an Encoder Reference section under Standards & Construction that captures the algorithmic detail needed to hand-roll a DataBar encoder: the k-out-of-n combinatorial enumeration (with TypeScript pseudocode for `count()` and `rankToWidths()`), the finder pattern selection rule for each variant, the weighted modulo-79 check character algorithm with structured weight-vector entry points, the four DataBar Expanded compaction sub-modes (Numeric, Alphanumeric, ISO/IEC 646, General-purpose FNC1-aware) with bit allocations, and a step-by-step Omnidirectional encoder pipeline. Specific lookup tables (the 9 Omnidir finder bit-strings and the 12 Expanded finder bit-strings) are marked as spec-extraction TODOs referencing ISO/IEC 24724 Annexes A–D for the canonical values rather than fabricated inline.

  48. DocsRFID.me

    New glossary page: MicroPDF417

    New `/glossary/micropdf417/` covering the compact PDF417 variant defined in ISO/IEC 24728. Explains the 38 fixed (1–4 columns × 4–44 rows) configurations, how the Row Address Pattern (RAP) system replaces full PDF417's row-indicator codewords, the shared 929-codeword alphabet, the three compaction modes (Text / Byte / Numeric), and the Reed-Solomon arithmetic over GF(929). Includes a head-to-head comparison table with full PDF417 and links to ISO/IEC 24728 + 15438 in the standards index.

  49. FixRFID.me

    EAN-13 and UPC-A barcodes now render real bars

    ZPL `^BE` (EAN-13) and `^BU` (UPC-A) - and the TSPL equivalents - were rendering as a placeholder rect instead of real bars. Two pre-existing bugs in the shared SVG renderer: the EAN-13 path passed raw input straight to a strict encoder that rejected anything without a valid check digit (so 12-digit data, the most common shape, always failed), and the UPC-A path dropped the last digit while padding to 13. Both paths now route through a normaliser that computes the EAN-13 check digit when needed, so `BARCODE 50,50,"EAN13",80,1,0,2,4,"123456789012"` and `^FO50,50^BUN,80,Y,N^FD036000291452^FS` render correctly in the playgrounds.

  50. EngineRFID.me

    MSI and Plessey barcodes now render real bars in TSPL and ZPL

    TSPL `BARCODE "MSI"`, `"MSIC"`, and `"PLESSEY"` previously fell through to a placeholder rect in the playground; ZPL `^BP` did the same. They now emit real bars in `/learn/tspl/` and `/learn/zpl/`. MSI is numeric with an optional Mod-10 check digit (the `"MSIC"` variant); Plessey is the original UK hex 0–9 A–F symbology with an 8-bit CRC tail. MSIC currently renders identically to MSI (the appended check-digit bars aren't visually emitted yet - needs a `checkDigit` flag on the canonical barcode element).

  51. EngineTSPL

    TSPL engine on typed BARCODE code-type grammar (0.19.0)

    Bumped `@rfid-me/tspl-engine` 0.18 → 0.19 to consume `@rfid-me/[email protected]`. The grammar now exposes 30 dedicated `SYM_BC_*` lexer tokens for the BARCODE `"code type"` parameter (`"128"`, `"128M"`, `"EAN128"`, `"39"`, `"EAN13"`, … through `"11"`) plus a `STRING` fallback for unknown values. No visible change in the TSPL playground today - visitor output and rendered labels are identical for known and unknown types - but this is the grammar surface the upcoming CodeMirror completion dropdown and parse-time diagnostics will hook into, and it unblocks MSI / PLESSEY as trivial follow-ups.

  52. FixRFID.me

    Label preview Fit now actually fits, and zoom ranges to 1000%

    The playground label preview used to land at 88% in the corner of the canvas on small-physical-size labels at high DPI (e.g. a 600-dot × 600-DPI ZPL example). Fit was computing scale against dot count rather than the SVG's natural CSS-px layout - clicking Fit did nothing because the bad math was stable. Fit now measures the rendered wrap's actual layout box and produces a sensible scale on first render, every label dimension, every DPI. Max zoom raised from 300% to 1000% with intermediate stops at 500 and 750. Hovering empty canvas now shows a zoom-in magnifier cursor so the affordance is visible.

  53. FeatureRFID.me

    Enumerated command parameters now render as a scannable list

    Parameters that accept a fixed set of source tokens - `BARCODE type` (30 values in TSPL/ZPL), `QRCODE ECC` (L/M/Q/H), `RFID sub-action` (READ/WRITE/LOCK/KILL/PERMALOCK), printer font selectors - used to dump all allowed values into one comma-separated paragraph in the command panel and the `/reference/<lang>/<command>` table. Both surfaces now render each value on its own line with the literal source token in monospace and an optional clarifier. Same data - just legible. Engine command-reference migrations land separately per language as their structured value lists ship.

  54. FixRFID.me

    All four engines on the canonical SVG renderer - legacy shims removed

    Bumped `@rfid-me/zpl-engine` 0.31 → 0.32, `@rfid-me/sbpl-engine` 0.26 → 0.27, `@rfid-me/tspl-engine` 0.16 → 0.17, and `@rfid-me/dpl-engine` 0.13 → 0.14. Each engine deleted its legacy per-engine `renderSvg` (a thin forwarding shim onto `@rfid-me/label-schema`) so the canonical shared renderer is now the only render path. No visible change in the playgrounds or Label Convert - same SVG output, same tests - but the dependency surface is smaller and future renderer improvements ship to all four languages at once.

  55. EngineTSPL

    TSPL: BLOCK auto-wrap text, ERASE region clear, plus CIRCLE / DIAGONAL command reference

    @rfid-me/tspl-engine 0.16.0 lands four graphics commands. **BLOCK** (`BLOCK x,y,width,height,"font",rotation,x-mul,y-mul,"data"`) renders multi-line text with automatic word-wrap inside the bounding box and clips once `floor(height / fontHeight)` lines have been laid out - useful for shipping-label description fields and multi-line addresses. **ERASE** (`ERASE x,y,width,height`) now actually clears the specified region (previously parsed silently with no rendered effect); the PG example `BAR 100,100,300,300; ERASE 150,150,200,200` correctly carves a hole out of the bar. **CIRCLE** and **DIAGONAL** gained command-reference entries so `/reference/tspl/circle` and `/reference/tspl/diagonal` render correctly - the CIRCLE entry explicitly notes the upper-left bounding-box anchor convention.

  56. FixRFID.me

    Accurate physical dimensions for TSPL and DPL labels at 300 / 600 DPI

    The DPI selector now reports physically-accurate width and height for TSPL and DPL sources. Previously a `SIZE 100 mm, 50 mm` TSPL source at 300 DPI would claim ~67.7 × 33.9 mm in the readout - contradicting the source. The fix moves DPI into the parser, so the dot grid is computed correctly at the target resolution. ZPL and SBPL (already dot-native) are unaffected at the default DPI.

  57. FeatureRFID.me

    Single shared SVG renderer across all four playgrounds

    Playgrounds and the Label Convert tool now use one canonical renderer from `@rfid-me/label-schema` instead of four separate per-engine renderers. Same visual output, one set of element-type behaviours, and a smaller bundle. Future improvements to the renderer (better text metrics, new element types, accessibility) land everywhere at once.

  58. FeatureRFID.me

    Share feedback from any page

    A small "Feedback" tab now sits in the bottom-right of every page. Tell us what is working, what is missing, and what would make rfid.me more useful - three short fields, sent straight to the team. The tab is always there if you want it; once per visitor, it gently expands into a short reminder after a few minutes of reading.

  59. EngineTSPL

    tspl-engine 0.14.0 - RFID command + codemirror-lang-tspl 0.4.0

    The TSPL engine now surfaces the RFID command as a first-class element (RfidElement type + visitor dispatcher + command-reference entry), and codemirror-lang-tspl 0.4.0 adds a RfidSubAction Lezer token so the playground highlights RFID READ / WRITE / LOCK sub-actions correctly. Upstream: tspl-grammar 0.4.0.

  60. DocsRFID.me

    Glossary: RFID memory banks

    New /glossary/rfid-memory-banks/ page covering the four Gen2 memory banks (Reserved / EPC / TID / User) - what each holds, which are writable, and how the TSPL RFID command targets them.

  61. FixZPL

    zpl-engine 0.30.0 - ^BM now renders real Micro QR (was rendering full QR)

    Correctness fix: ^BM (Micro QR) was wired through the full-QR renderer and produced a 21×21 full QR symbol regardless of input. With this fix, ^BM dispatches to the new encodeMicroQr in @rfid-me/epc-parser 1.9.0 and produces a real Micro QR (M1 11×11 through M4 17×17) sized to fit the data.

  62. DocsRFID.me

    Glossary: Micro QR Code

    New /glossary/micro-qr/ page covering the four Micro QR sizes (M1-M4), how it differs from full QR (single finder, 4 masks, BCH(15,5) format info, 2× quiet zone, mask selected by MAXIMISING an edge-darkness score), and capacity tables for numeric / alphanumeric / byte modes at each supported EC level.

  63. FeatureRFID.me

    QR Code - Standards & Construction tab + 40-version picker

    The /glossary/qr-code/ page now has a full Standards & Construction tab covering the symbol structure (finder + alignment + timing + format/version info), all 40 QR versions with a dropdown to pick any one and see its Numeric / Alphanumeric / Byte capacity at every error-correction level, the six encoding modes including FNC1, all 8 mask patterns with their (i, j) flip formulas, the 4 penalty rules used to pick the best mask, and a link to the Reed-Solomon guide.

  64. FeatureRFID.me

    GS1 DataMatrix - Standards & Construction tab

    /glossary/gs1-datamatrix/ now has a full Construction tab covering the FNC1-prefix rule that promotes ECC 200 Data Matrix to GS1 DataMatrix, the L-finder + alternating clock track structure, all 14 square symbol sizes (10×10 to 48×48) with data + EC codeword counts and payload capacities, the four-stage encoding pipeline, and the Reed-Solomon GF(256) error-correction model.

  65. FeatureRFID.me

    GS1 DataBar - Standards & Construction tab

    /glossary/gs1-databar/ now has a full Construction tab covering all 7 DataBar variants (Omnidirectional, Truncated, Stacked, Stacked Omnidirectional, Limited, Expanded, Expanded Stacked) with module-width and height summary, the RSS-14 character encoding, the 9 finder patterns and their role as data carriers, and the internal mod-79 check character.

  66. DocsRFID.me

    Glossary: start and stop characters

    New concept page covering the sentinels that bracket every 1D linear barcode - visible asterisks in Code 39, encoded A/B/C/D in Codabar, silent Start A/B/C in Code 128, and guard patterns in EAN/UPC.

  67. DocsRFID.me

    Main nav: Learn dropdown deduped

    The main navigation's Learn dropdown no longer repeats "Playground" on every row - entries are now just "ZPL", "SBPL", "TSPL", "DPL". Pairs with yesterday's footer cleanup so the chrome is consistent across the site.

  68. FixZPL

    zpl-engine 0.29.2 - ^BE / ^BU now render with spec-correct input

    Previously ^BE (EAN-13) and ^BU (UPC-A) only rendered when given the full check-digit-included payload. With the spec-correct N-1 input (12 digits for ^BE, 11 for ^BU - printer computes the check digit) the renderer fell through to a placeholder rect. Two bugs fixed: the UPC-A → EAN-13 conversion no longer truncates the last digit, and both commands now compute the check digit themselves.

  69. FeatureRFID.me

    Playground UI - less visual noise

    Command filter chips are hidden until you click into the search box, then they slide in beneath it. An active filter shows inline as a small pill next to the search (click to clear). The "What is X?" and "Command Reference" links moved out of the top toolbar into the Commands sidebar header where they're contextual.

  70. DocsRFID.me

    Site footer cleanup

    The Learn column no longer repeats "Playground" four times - entries are now just "ZPL", "SBPL", "TSPL", "DPL". The Tools column now includes Label Convert alongside the EPC Parser.

  71. DocsRFID.me

    Glossary: wide-to-narrow ratio

    New concept page covering the wide-to-narrow ratio in two-width symbologies (Code 39, LOGMARS, Codabar, Interleaved 2 of 5) with permitted ranges per spec and how each printer language sets the value.

  72. DocsRFID.me

    Glossary: bar and space

    New concept page covering the two visible elements of every 1D linear barcode, with side-by-side examples of module-based (Code 128) and width-based (Code 39) encodings.

  73. DocsRFID.me

    Glossary: wide and narrow elements

    New concept page covering the two-width construction used by Code 39, Codabar, and the 2-of-5 family - the "narrow vs wide" rule that distinguishes these older symbologies from module-counted ones like EAN/UPC and Code 128.

  74. FeatureRFID.me

    DPI selector in the preview

    Choose 203 / 300 / 600 DPI to see the label at the resolution your target printer actually uses. Physical dimensions (mm and inches) update with the selection. Your choice persists across reloads.

  75. EngineZPL

    zpl-engine 0.29.0 - renderSvg({ dpi })

    The renderer now accepts a DPI option. The default call stays byte-identical to previous output; passing { dpi } adds physical-dimension metadata to the SVG.

  76. EngineSBPL

    sbpl-engine 0.25.0 - renderSvg({ dpi })

    Same DPI contract as the other engines. Metadata-only; viewBox and bar widths in dots are unchanged.

  77. EngineTSPL

    tspl-engine 0.12.0 - renderSvg({ dpi })

    TSPL's mm/inch SIZE source rescales to the chosen DPI: SIZE 75 mm, 50 mm becomes 600 × 400 dots at 203 DPI and 1772 × 1182 at 600 DPI.

  78. EngineDPL

    dpl-engine 0.12.0 - renderSvg({ dpi })

    DPL's 1/100-inch units now scale by dpi/203 at render time. The previously hard-coded 2.03 dots-per-unit factor is parameterised.

  79. DocsRFID.me

    Command reference ↔ glossary cross-links

    Every barcode command page in the reference (e.g. ^BC, ^BE, ^BI) now links to its glossary symbology page, and every glossary symbology page links back to the printer-language commands that produce it. Easier to jump from "how do I print this?" to "what is this barcode?".

  80. FeatureRFID.me

    GS1-128 - Standards & Construction tab

    The /glossary/gs1-128/ page now has a dedicated Standards & Construction tab covering Code 128 as the base symbology, the GS1 AI extension layer, FNC1 framing, and the canonical Related-pages grid.

  81. FeatureRFID.me

    ITF-14 - interleaving diagram + Standards tab

    New visual diagram on /glossary/itf-14/ showing exactly how a digit pair gets interleaved into 10 bars/spaces. Plus a full Standards & Construction tab covering Interleaved 2 of 5 patterns, bearer bars, and GS1 outer-pack GTIN-14 use.

  82. FeatureRFID.me

    10 new barcode-fundamentals glossary pages

    Concept pages added for check digit, quiet zone, X-dimension, module, bar/space, encoding scheme, parity, start/stop characters, symbology, and human-readable interpretation. Surfaced on the glossary index and cross-linked from every barcode page's Construction tab.

  83. FeatureRFID.me

    Glossary: canonical Key standards + Related card grids

    Every glossary page now uses the same Key-standards / Related-pages card layout so it's easier to find the standard that governs a symbology, and the other pages that touch the same topic.