Skip to content
Projects

mtth/avsc has 1,389 GitHub stars and 157 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-08 06:13 UTC. Last push 2026-02-22.

How these counts are measured

Avro for JavaScript :zap:

What you can do

  • Blazingly fast and compact serialization! Typically faster than JSON with much smaller encodings.
  • All the Avro goodness and more: type inference, schema evolution...
  • Support for serializing arbitrary JavaScript objects.
  • Unopinionated 64-bit integer compatibility.

Measured star growth

in 24h
0
in 7 days
Collecting history
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.md

Original

Avsc NPM version Download count CI Coverage status

Pure JavaScript implementation of the Avro specification.

Features

Installation

$ npm install avsc

Documentation

Examples

const avro = require('avsc');
  • Encode and decode values from a known schema:

    const type = avro.Type.forSchema({
      type: 'record',
      name: 'Pet',
      fields: [
        {
          name: 'kind',
          type: {type: 'enum', name: 'PetKind', symbols: ['CAT', 'DOG']}
        },
        {name: 'name', type: 'string'}
      ]
    });
    
    const buf = type.toBuffer({kind: 'CAT', name: 'Albert'}); // Encoded buffer.
    const val = type.fromBuffer(buf); // = {kind: 'CAT', name: 'Albert'}
    
  • Infer a value's schema and encode similar values:

    const type = avro.Type.forValue({
      city: 'Cambridge',
      zipCodes: ['02138', '02139'],
      visits: 2
    });
    
    // We can use `type` to encode any values with the same structure:
    const bufs = [
      type.toBuffer({city: 'Seattle', zipCodes: ['98101'], visits: 3}),
      type.toBuffer({city: 'NYC', zipCodes: [], visits: 0})
    ];
    
  • Get a readable stream of decoded values from an Avro container file (see the BlockDecoder API for an example compressed using Snappy):

    avro.createFileDecoder('./values.avro')
      .on('metadata', function (type) { /* `type` is the writer's type. */ })
      .on('data', function (val) { /* Do something with the decoded value. */ });
    

Explore related projects