Home / Open Source / Free RFID Simulator & Virtual Reader: OpenRFID Web & CLI
Testing & Emulation TypeScript / Node.js 20+ / React License: MIT v1.2.0

Free RFID Simulator & Virtual Reader: OpenRFID Web & CLI

High-performance modular open-source RFID simulation framework for LLRP, TCP/IP, and Serial interfaces with bulk EPC Gen2 tag inventory emulation.

Quick Clone / Terminal Setup git / bash
git clone https://github.com/rfidsoftwares/openrfid-simulator.git && npm install
Zero Installation Required

Try OpenRFID Simulator in your Web Browser

Need to simulate 5,000 tags/sec, test EPC Gen2 memory banks, or emulate LLRP streams immediately? Launch our interactive browser playground without downloading anything.

Live Video Laboratory & Tutorials

Watch Video Walkthrough Before Using

HD 1080p • Technical Walkthrough

OpenRFID Simulator Tutorial: Virtual Reader & EPC Gen2 Emulation

View Dedicated Video Page & Notes →

Step-by-step tutorial on launching headless virtual reader nodes via CLI, configuring 1-16 antenna ports with Gaussian noise, and encoding GS1 SGTIN-96 tags.

Project Overview & Architecture

Production-grade, modular open-source RFID simulation framework engineered for full-stack IoT testing, supply chain automation, and protocol research without acquiring expensive physical RFID readers or tags. Built with a decoupled high-throughput event loop benchmarking 5,000+ tag reads per second and persistent SQLite WAL logging, it emulates fixed industrial readers (Impinj Speedway R420/R700, Zebra FX9600, Alien ALR-F800) across LLRP (Low Level Reader Protocol v1.0.1/v1.1), TCP/UDP raw sockets, and Serial RS232 interfaces. Features comprehensive EPC Class 1 Gen 2 (ISO 18000-6C) memory bank emulation, GS1 SGTIN-96/GRAI-96/GIAI-96 encoding, software-adjustable RSSI Gaussian noise, antenna port switching (1–16 ports), Fastify REST APIs, real-time WebSocket streams, and MQTT telemetry broker bridges for zero-dependency CI/CD test automation.

4-Tier Edge Pipeline Architecture

1. Protocol Server

Socket Emulation

Binds LLRP (TCP 5084), Raw TCP/UDP (Port 8088), and Serial COM ports to simulate physical reader connections.

2. Tag Generator

EPC & GS1 Engine

Generates synthetic 24-hex EPC tags, GS1 SGTIN-96 encoded identities, and multi-bank memory structures.

3. Physics Engine

Antenna & RSSI Noise

Simulates 1-16 antenna multiplexing, dwell times, reader TX power (0-30 dBm), and Gaussian RSSI signal attenuation.

4. Telemetry Dispatch

REST, WebSockets & MQTT

Broadcasts simulated reads in real-time to Fastify HTTP endpoints, WebSocket UI clients, and cloud MQTT brokers.

Monorepo Packages (12)

NPM Monorepo
@openrfid/core v1.2.0

Core dependency injection, event bus, config validation, and SQLite storage.

npm i @openrfid/core
@openrfid/epc v1.2.0

EPC Class 1 Gen 2 memory bank bitwise encoding, decoding, and CRC-16 calculation.

npm i @openrfid/epc
@openrfid/gs1 v1.2.0

GS1 SGTIN-96, GRAI-96, GIAI-96, and SSCC-96 binary schema converters.

npm i @openrfid/gs1
@openrfid/readers v1.2.0

Virtual multi-antenna fixed reader engine with TX power and RSSI noise models.

npm i @openrfid/readers
@openrfid/simulator v1.2.0

High-throughput tag inventory cycle engine with event loops and debounce queues.

npm i @openrfid/simulator
@openrfid/rest v1.2.0

Fastify REST API server plugin exposing /readers, /tags, and /inventory endpoints.

npm i @openrfid/rest
@openrfid/websocket v1.2.0

Real-time WebSocket server broadcasting live tag detection streams to frontends.

npm i @openrfid/websocket
@openrfid/mqtt v1.2.0

MQTT IoT telemetry client publishing tag read JSON payloads to cloud brokers.

npm i @openrfid/mqtt
@openrfid/cli v1.2.0

Headless command-line binary tool for CI/CD test automation.

npm i -g @openrfid/cli
@openrfid/tags v1.2.0

RFID tag domain models, synthetic tag batch generator, and memory inspector.

npm i @openrfid/tags
@openrfid/ui v1.2.0

Shared React UI component library and telemetry visualization widgets.

npm i @openrfid/ui
@openrfid/utils v1.2.0

Gaussian math distributions, hex converters, and low-level bitwise helpers.

npm i @openrfid/utils

Feature Benchmark: OpenRFID Solution vs. Proprietary Alternatives

Feature Capability OpenRFID Solution (MIT) Commercial Paid Solutions Hardware Rig / Manual
License & Commercial Cost 100% Free & Open Source (MIT) $499 - $1,200 / Developer Seat $1,500 - $3,500 / Physical Reader
Throughput Benchmark ✓ 5,000+ Tags/Sec (Zero Allocation Byte Buffers) 100 - 500 Tags/Sec Max 300 - 1,200 Tags/Sec (Physics Limited)
LLRP & Socket Emulation ✓ 1:1 Impinj & Zebra LLRP Server + TCP/Serial Partial LLRP (Proprietary format only) ✓ Hardware LLRP implementation
CI/CD & Headless Automation ✓ Zero-Dependency NPX CLI & Docker Container ✗ Windows GUI only / No CLI flags ✗ Requires physical hardware rig in office
GS1 TDS 2.0 Encoders ✓ Built-in SGTIN-96, GRAI-96, GIAI-96, SSCC-96 Add-on Module ($299 extra) Manual tag encoding required

CLI Arguments & Configuration Reference

Parameter / Flag Type Default Description & Action
--port <number> integer 5084 LLRP TCP listening port for client connection.
--antennas <1-16> integer 4 Number of simulated virtual antenna ports.
--rate <tags/sec> integer 500 Tag inventory streaming rate per second.
--protocol <type> string "llrp" Reader protocol standard: llrp, tcp-raw, serial-ascii, or json-stream.
--tx-power <dBm> number 30.0 Simulated reader transmitter RF power level (0 to 30 dBm).
--rssi-noise <sigma> number 2.5 Gaussian standard deviation for realistic RSSI signal jitter.

Code & Integration Blueprint

Copyable starter templates, CLI flags, and CI/CD pipelines:

server.js
// 1. Install packages
// npm install @openrfid/core @openrfid/simulator @openrfid/gs1

import { Simulator, LlrpReader } from '@openrfid/simulator';
import { Sgtin96Encoder } from '@openrfid/gs1';

// Create virtual 4-port LLRP fixed reader
const reader = new LlrpReader({
  port: 5084,
  antennas: 4,
  txPowerDbm: 30,
  rssiMin: -65,
  rssiMax: -32
});

// Generate GS1 SGTIN-96 Tag
const epc = Sgtin96Encoder.encode({
  companyPrefix: '0614141',
  itemReference: '107346',
  serialNumber: '998234'
});

// Stream 500 simulated tags/sec
reader.streamTags({
  ratePerSecond: 500,
  tags: [{ epc, rssi: -42, antenna: 1 }],
  onTagRead: (tag) => {
    console.log(`[LLRP READ] Antenna ${tag.antenna} | EPC: ${tag.epc} | RSSI: ${tag.rssi} dBm`);
  }
});

Technical Specifications & Runtime Environment

Target Architecture TypeScript / Node.js 20+ / React • MIT Open Source License
Supported Protocols LLRP (Low Level Reader Protocol), TCP/IP, Serial, MQTT
Emulation Standard EPCglobal Class 1 Gen 2 / ISO 18000-6C
Simulated Reader Models Impinj Speedway R420/R700, Zebra FX9600, Alien ALR-F800
Memory Banks EPC, TID, User Memory, Reserved (Kill/Access Passwords)

Key Features & Capabilities

  • ✓ High-Throughput Simulation Loop (5,000+ Tags/Sec with Decoupled Event Architecture)
  • ✓ Bi-Directional Bitwise GS1 Encoders (SGTIN-96, GRAI-96, GIAI-96, SSCC-96)
  • ✓ Full EPC Gen2 4-Bank Memory Emulation (Reserved 00, EPC 01, TID 10, User 11)
  • ✓ LLRP Protocol & Multi-Vendor TCP Socket Emulation (Impinj, Zebra, Alien, Identium)
  • ✓ Software-Tunable Antenna Port Multiplexing (1–16 Ports) with RSSI Gaussian Noise
  • ✓ Hot-Swappable Protocol Plugins: Fastify REST API, WebSocket Broadcaster & MQTT Bridge
  • ✓ Zero-Dependency Headless CLI (npx @openrfid/cli) for Automated CI/CD Pipelines
  • ✓ Cross-Platform Native Desktop Application powered by Tauri and Rust

Frequently Asked Questions

How does OpenRFID Simulator benchmark 5,000+ tag reads/sec in CI/CD without burning RAM? ↓

OpenRFID Simulator utilizes a decoupled simulation event loop with non-blocking asynchronous generators and an in-memory SQLite Write-Ahead-Log (WAL) buffer. It micro-batches tag events using zero-allocation byte buffers, keeping memory consumption strictly under 40 MB even during massive simulated warehouse inventory sweeps.

What RFID reader protocols and fixed hardware models does it emulate? ↓

It emulates LLRP (Low Level Reader Protocol v1.0.1 / v1.1), multi-vendor TCP raw socket streams, and serial RS232 connections. This enables 1:1 hardware drop-in simulation for Impinj Speedway R420/R700, Zebra FX9600, Alien ALR-F800, and Identium 4-port readers.

Can it encode GS1 standard barcodes like SGTIN-96, GRAI-96, and GIAI-96? ↓

Yes! The @openrfid/gs1 package includes full bi-directional bitwise conversion for GS1 EPC Tag Data Standards (TDS 2.0). It converts standard GTIN-14 and EAN-13 barcodes into 24-hex EPC Gen2 memory bank representations.

How do I connect external MQTT brokers or WebSockets to the simulation stream? ↓

The simulator includes modular plugins (@openrfid/mqtt and @openrfid/websocket). By passing flags like `--broker mqtt://broker.emqx.io:1883 --topic rfid/portal1`, the engine broadcasts live tag reads, antenna IDs, and RSSI telemetry to cloud dashboards in real time.

Can OpenRFID Simulator simulate antenna multiplexing and RSSI signal noise? ↓

Yes. You can configure 1 to 16 antenna ports per virtual reader, configure TX power (0 to 30 dBm), and inject Gaussian signal fading (e.g. -35 dBm to -75 dBm) to test middleware filtering and directional transit algorithms.

Is OpenRFID Simulator free and open-source under the MIT license? ↓

Yes, OpenRFID Simulator is 100% open-source under the permissive MIT license. You can freely integrate, customize, and deploy it in automated commercial CI/CD pipelines and enterprise software testing rigs.

Application & SDK Preview

OpenRFID Simulator for virtual RFID reader and emulation testing

Paid Customization & Free Help

We offer free community help on GitHub issues and discussions. If you need bespoke features, customized mobile apps, or dedicated on-site deployment, contact us for paid enterprise integration services.

🖥️ OpenRFID Studio Preview 1 / 5
Hi, Can I Help ? 💬
AI