Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use Transformers.js to run state-of-the-art machine learning models directly in JavaScript/TypeScript. Supports NLP (text classification, translation, summarization), computer vision (image classification, object detection), audio (speech recognition, audio classification), and multimodal tasks. Works in browsers and server-side runtimes (Node.js, Bun, Deno) with WebGPU/WASM using pre-trained models from Hugging Face Hub.
.claude/skills/waybarrios-transformers-js/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 14% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 16% | 0% |
Runs state-of-the-art ML models directly in JavaScript, in browsers and server-side runtimes (Node.js, Bun, Deno), with no Python server required.
bashnpm install @huggingface/transformers
javascript// Browser (CDN) import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers';
Pipeline API — groups preprocessing, inference, and postprocessing. Always dispose() when done to free memory (see references/EXAMPLES.md for cleanup patterns):
javascriptimport { pipeline } from '@huggingface/transformers'; const pipe = await pipeline('sentiment-analysis'); const result = await pipe('I love transformers!'); await pipe.dispose();
Model selection — pass a model ID as the second argument, e.g. pipeline('sentiment-analysis', 'Xenova/bert-base-multilingual-uncased-sentiment'). Browse compatible models at https://huggingface.co/models?library=transformers.js&sort=trending, filtered by pipeline_tag for a specific task.
Device: { device: 'webgpu' } for GPU acceleration (falls back to WASM/CPU when unsupported); omit for CPU/WASM default.
Quantization: { dtype: 'q4' } — options fp32 (largest/most accurate), fp16, q8, q4 (smallest, some accuracy loss).
One pipeline call per task, e.g. await pipeline('image-classification')('https://example.com/image.jpg'). Task IDs by category:
text-classification/sentiment-analysis, token-classification/ner, question-answering, fill-mask, summarization, translation, text-generation, text2text-generation, zero-shot-classificationimage-classification, object-detection, image-segmentation, depth-estimation, zero-shot-image-classification, image-to-imageautomatic-speech-recognition, audio-classification, text-to-speech/text-to-audioimage-to-text, document-question-answering, zero-shot-object-detectionfeature-extraction (add { pooling: 'mean', normalize: true } for sentence embeddings), sentence-similarityFor streaming/chat text generation (system/user/assistant roles, TextStreamer, generation params), see references/TEXT_GENERATION.md.
Filter the Hub by library=transformers.js and pipeline_tag=<task>, sort by trending/downloads/likes/modified. Consider: size (<100MB fast/browser-friendly, 100-500MB balanced, >500MB high-accuracy/Node.js), quantization (fp32/fp16/q8/q4 trade accuracy for size/speed), task compatibility (check the model card for supported tasks, I/O format, language, license), and performance metrics on the model card. Start with a smaller model, verify it has ONNX files, and pin a specific revision in production for stability.
Environment (env) controls caching and model loading globally:
javascriptimport { env, LogLevel } from '@huggingface/transformers'; env.allowRemoteModels = true; // load from Hugging Face Hub env.allowLocalModels = false; // load from file system env.localModelPath = '/models/'; env.useFSCache = true; // Node.js disk cache env.useBrowserCache = true; env.cacheDir = './.cache'; env.logLevel = LogLevel.INFO; // default WARNING env.fetch = (url, options) => fetch(url, { ...options, headers: { ...options?.headers, Authorization: `Bearer ${HF_TOKEN}` } });
Typical patterns: development uses remote models + FS cache; production uses local-only models from a fixed path; testing disables both caches. Full option/caching reference: references/CONFIGURATION.md.
ModelRegistry (v4) inspects model assets before loading — required files, cache status, available dtypes:
javascriptimport { ModelRegistry } from '@huggingface/transformers'; const files = await ModelRegistry.get_pipeline_files(task, modelId, modelOptions); const cached = await ModelRegistry.is_pipeline_cached(task, modelId, modelOptions); const dtypes = await ModelRegistry.get_available_dtypes(modelId);
See references/MODEL_REGISTRY.md for full API coverage.
Standalone tokenization: npm install @huggingface/tokenizers for fast tokenization without loading a full inference pipeline.
Manual tokenizer + model for finer control:
javascriptimport { AutoTokenizer, AutoModel } from '@huggingface/transformers'; const tokenizer = await AutoTokenizer.from_pretrained('bert-base-uncased'); const model = await AutoModel.from_pretrained('bert-base-uncased'); const outputs = await model(await tokenizer('Hello world!'));
Batch processing: pass an array of inputs to any pipeline, e.g. classifier(['I love this!', 'This is terrible.']).
WebGPU accelerates browsers and supporting server runtimes — use it when available, fall back to WASM/CPU otherwise. WASM is the most portable backend; combine with q8/q4 quantization for smaller, faster models.
Progress tracking for large multi-file downloads — pass progress_callback to pipeline(); the callback receives {status: 'initiate'|'download'|'progress'|'progress_total'|'done'|'ready', name, file?, progress?, loaded?, total?}. Full patterns (browser UI, React, CLI, retries) in references/PIPELINE_OPTIONS.md#progress-callback.
javascripttry { const pipe = await pipeline('sentiment-analysis', 'model-id'); const result = await pipe('text to analyze'); } catch (error) { // error.message mentions 'fetch' -> download/network issue // error.message mentions 'ONNX' -> model execution/compatibility issue }
Always call pipe.dispose() when finished (app shutdown, component unmount, before loading a different model, after batch processing) — models hold 100MB-several GB of memory/GPU resources. See references/CACHE.md and references/EXAMPLES.md for cache and cleanup patterns across runtimes.
onnx folder in the repo).dtype: 'q4'), reduce batch size, limit max_length.fp16 if fp32 fails, or fall back to WASM.Always dispose pipelines; prefer the pipeline API unless fine-grained control is needed; test with small inputs first; watch download sizes for web apps; show progress indicators; pin model versions in production; wrap pipeline calls in try/catch; provide fallbacks for unsupported browsers/backends; reuse loaded pipelines rather than recreating them; dispose models on SIGTERM/SIGINT in servers.
This skill: references/PIPELINE_OPTIONS.md, CONFIGURATION.md, MODEL_REGISTRY.md, CACHE.md, TEXT_GENERATION.md, MODEL_ARCHITECTURES.md, EXAMPLES.md.
Official: docs, API reference, model hub, GitHub, examples.
Other measured skills in the registry, with their headline benchmark lift.