Performance Benchmarks
25-30 MB/s (complex files)
Production Parse Speed
1,265 MB/s (optimal)
Peak Throughput
90% reduction (100MB→9.4MB)
Memory Efficiency
114KB (77% under target)
WASM Bundle
v0.4.1 Enhanced Performance
10KB
<5ms
<5ms
1MB
<50ms
<50ms
10MB
<400ms
<400ms
100MB
<3.6s
<3.6s
1GB
<36s
<36s
Parse → Modify → Build in Four Languages
- TypeScript
- Python
- CLI
- Rust
// Parse DDEX
const { DdexParser } = require('ddex-parser');
const parser = new DdexParser();
const data = await parser.parse(xmlString);
// Build DDEX
const { DdexBuilder } = require('ddex-builder');
const builder = new DdexBuilder();
builder.applyPreset('spotify_album'); // optional
const xml = await builder.build(request);
// Batch process
const { batchBuild } = require('ddex-builder');
const results = await batchBuild(jsonStringArray);
npm install ddex-parser ddex-builder
from ddex_parser import DDEXParser
from ddex_builder import DDEXBuilder
# Parse to DataFrame for analysis
parser = DDEXParser()
df = parser.to_dataframe('release.xml')
# Analyze with pandas
print(df.releases.groupby('artist').count())
# Build from DataFrame
builder = DDEXBuilder()
xml = builder.from_dataframe(df, version='4.3')
pip install ddex-parser ddex-builder
# Parse DDEX file to JSON
ddex-parser parse release.xml > release.json
# Validate and analyze
ddex-parser validate release.xml
ddex-parser analyze release.xml
# Build from JSON
ddex-builder build release.json release.xml
# Use presets for different platforms
ddex-builder build --preset youtube_album release.json
cargo install ddex-parser ddex-builder
use ddex_parser::DDEXParser;
use ddex_builder::DDEXBuilder;
use std::fs;
// Parse DDEX XML to structured data
let parser = DDEXParser::new();
let xml_content = fs::read_to_string("release.xml")?;
let result = parser.parse(&xml_content)?;
// Access clean, typed data
println!("Release title: {}", result.flat.releases[0].title);
println!("Artist name: {}", result.flat.sound_recordings[0].artist);
// Modify the data
result.flat.releases[0].title = "Remastered Edition".to_string();
result.flat.deals[0].territories.extend_from_slice(&["US", "CA", "GB"]);
// Build back to deterministic XML
let builder = DDEXBuilder::new();
let new_xml = builder.build(&result.to_build_request())?;
cargo add ddex-parser ddex-builder
Parser vs Builder: Complementary Powerhouses
DDEX Parser
Transform DDEX XML into clean, structured data
Multi-Version Support
ERN 3.8.2, 4.2, and 4.3
ERN 3.8.2, 4.2, and 4.3
Dual Representations
Graph and flattened data models
Graph and flattened data models
DataFrame Integration
Native pandas/polars support
Native pandas/polars support
Streaming Parser
Handle GB+ files efficiently
Handle GB+ files efficiently
Detailed Errors
Precise validation feedback
Precise validation feedback
DDEX Builder
Generate deterministic, compliant DDEX XML
Deterministic Output
Byte-perfect reproducibility
Byte-perfect reproducibility
Platform Presets
Spotify, Apple, YouTube ready
Spotify, Apple, YouTube ready
Preflight Validation
Catch errors before building
Catch errors before building
DB-C14N/1.0
Industry-standard canonicalization
Industry-standard canonicalization
DataFrame Builder
Build from structured data
Build from structured data
Why Choose DDEX Suite?
Purpose-built for DDEX processing, not adapted from generic XML tools
Performance
15x faster than XML parsers
Slow, memory-intensive parsing
Data Fidelity
Perfect round-trip guarantee
Data loss during transformations
Multi-Platform
Native Node.js, Python, WASM, CLI
Single language or poor bindings
Developer Experience
TypeScript definitions, detailed errors
Poor documentation, cryptic errors
Industry Standards
DB-C14N/1.0, platform presets
Generic XML tools
Scalability
Stream GB+ files with <100MB memory
Memory explosion with large files