Modular Architecture
New Release 2.0

Vue3 Waveform
Visualizer

A modular Vue 3 package for wavesurfer.js with individual plugins. Import only what you need for optimal bundle sizes, complete with TypeScript support and modern Vue 3 patterns.

Modular Plugins

Import only what you need

Tree-shaking

Smaller bundle sizes

TypeScript

Full type safety

8
Available Plugins
4
Usage Patterns
100%
TypeScript
Vue 3
Composition API
Open Source
2,412+ Downloads
34+ Stars
Powerful Features

Key Features

Built with modern Vue 3 patterns and designed for optimal performance. Experience the power of modular audio visualization.

Modular Architecture

Core Feature

Our modular design separates core functionality from plugins, allowing you to import only what you need. This results in smaller bundle sizes and better performance for your applications.

Key Benefits

Smaller bundles
Better performance
Flexible imports

Code Example

import { useWaveSurfer } from '@meersagor/wavesurfer-vue'
import { useWaveSurferTimeline } from '@meersagor/wavesurfer-vue'

const { waveSurfer } = useWaveSurfer({ containerRef, options })
const { timelinePlugin } = useWaveSurferTimeline({ waveSurfer })

Individual Plugins

8 Plugins

Choose from 8 carefully crafted plugins that provide specialized functionality. From timeline navigation to audio recording, each plugin is designed to work seamlessly together.

Key Benefits

Specialized functionality
Easy integration
Plugin ecosystem

Code Example

// Available plugins:
// Timeline, Zoom, Minimap, Hover
// Envelope, Spectrogram, Regions, Recorder

const { zoomPlugin } = useWaveSurferZoom({ waveSurfer })
const { regionsPlugin } = useWaveSurferRegions({ waveSurfer })

Tree-shaking Friendly

Optimized

Built with modern bundlers in mind, our package supports tree-shaking out of the box. Unused plugins are automatically excluded, keeping your bundle size minimal.

Key Benefits

Automatic optimization
Minimal bundle size
Modern bundlers

Code Example

// Only imports what you use
import { useWaveSurfer } from '@meersagor/wavesurfer-vue'
import { useWaveSurferTimeline } from '@meersagor/wavesurfer-vue'
// Unused plugins are not included in bundle

Available Plugins

Choose from 8 specialized plugins to enhance your audio visualization experience

Timeline

Time markers and navigation

Time display
Click to seek
Custom formatting

Zoom

Zoom in/out functionality

Zoom controls
Min/max limits
Smooth transitions

Minimap

Overview of entire waveform

Full overview
Navigation aid
Custom styling

Hover

Hover effects and interactions

Cursor tracking
Hover events
Visual feedback

Envelope

Audio envelope visualization

Volume display
Audio analysis
Real-time updates

Spectrogram

Frequency spectrum display

Frequency analysis
Color mapping
Time-frequency view

Regions

Audio region management

Region creation
Drag & drop
Event handling

Recorder

Audio recording functionality

Live recording
Format support
Download options

Ready to Get Started?

Start building amazing audio experiences with our modular plugin system

Quick Setup

Get Started in Minutes

Install and start using WaveSurfer Vue in your Vue 3 project with just a few commands

Installation

Package

Choose your preferred package manager and install the package

npm
npm install @meersagor/wavesurfer-vue
yarn
yarn add @meersagor/wavesurfer-vue
pnpm
pnpm add @meersagor/wavesurfer-vue

Package Stats

Stats

Community adoption and package information

Downloads
2,412+
Stars
34+
Version
2.0.0
License
MIT

Basic Usage

Example

Get started with a simple audio player implementation

<script setup lang="ts">
import { ref } from 'vue'
import { useWaveSurfer } from '@meersagor/wavesurfer-vue'

const containerRef = ref<HTMLElement | null>(null)

const { waveSurfer, currentTime, totalDuration, isPlaying } = useWaveSurfer({
  containerRef,
  options: {
    height: 48,
    waveColor: '#4F4A85',
    progressColor: '#383351',
    barWidth: 3,
    barGap: 2,
    barRadius: 4
  }
})
</script>

<template>
  <div>
    <div ref="containerRef"></div>
    <button @click="waveSurfer?.playPause()">
      {{ isPlaying ? 'Pause' : 'Play' }}
    </button>
  </div>
</template>

Quick Links

Resources

Essential resources to help you get started

Live Demo

Interactive Playground

Experiment with different plugins and configurations. See live code generation and test various WaveSurfer Vue features.

Configuration

2 Active

Configure plugins, visual settings, and audio behavior

Plugin Selection

Visual Configuration

Audio Configuration

Quick Actions

Use these presets to quickly set up common configurations

Live Demo

Preview

See your configuration in action with a live preview

00:1502:45
timelinezoom

Generated Code

Vue 3

Copy the generated Vue 3 code for your project

<script setup lang="ts">
import { ref } from 'vue'
import { useWaveSurfer } from '@meersagor/wavesurfer-vue'
import { useWaveSurferTimeline } from '@meersagor/wavesurfer-vue'
import { useWaveSurferZoom } from '@meersagor/wavesurfer-vue'

const containerRef = ref<HTMLElement | null>(null)

const options = {
  "height": 48,
  "waveColor": "#4F4A85",
  "progressColor": "#383351",
  "barWidth": 3,
  "barGap": 2,
  "barRadius": 4,
  "volume": 0.8,
  "autoplay": false,
  "loop": false,
  "responsive": true,
  "fillParent": true
}

const { waveSurfer, currentTime, totalDuration, isPlaying } = useWaveSurfer({
  containerRef,
  options
})

const { timelinePlugin } = useWaveSurferTimeline({ waveSurfer })
const { zoomPlugin } = useWaveSurferZoom({ waveSurfer })

const formatTime = (seconds: number): string => 
  [seconds / 60, seconds % 60]
    .map((v) => `0${Math.floor(v)}`.slice(-2))
    .join(':')
</script>

<template>
  <div>
    <div ref="containerRef"></div>
    <div class="controls">
      <button @click="waveSurfer?.playPause()">
        {{ isPlaying ? 'Pause' : 'Play' }}
      </button>
    </div>
    <p>Current Time: {{ formatTime(currentTime) }}</p>
    <p>Duration: {{ formatTime(totalDuration) }}</p>
  </div>
</template>

Configuration Summary

Summary

Overview of your current settings and active plugins

Active Plugins (2)

timelinezoom

Visual Settings

Height: 48px
Bar Width: 3px
Bar Gap: 2px
Bar Radius: 4px

Audio Settings

Volume: 80%
Auto-play: No
Loop: No
Responsive: Yes

Ready to Build Something Amazing?

Start building powerful audio experiences with our modular WaveSurfer Vue components

Why Choose @meersagor/wavesurfer-vue?

A modern, modular approach to audio visualization that gives you the flexibility and performance you need for your Vue 3 applications.

Modular Architecture

Core functionality separated from plugins. Import only what you need for optimal bundle sizes.

Individual plugins
Tree-shaking friendly
Smaller bundles

Modern Vue 3

Built with Vue 3 Composition API and TypeScript for type safety and modern development patterns.

Composition API
TypeScript support
Reactive state

Multiple Usage Patterns

Flexible usage with core + plugins, standalone plugins, core only, or component patterns.

4 usage patterns
Standalone plugins
Component support

Rich Plugin Ecosystem

8 specialized plugins for timeline, zoom, minimap, hover, envelope, spectrogram, regions, and recording.

8 plugins
Specialized functionality
Easy integration

Key Benefits

Bundle Optimization

Tree-shaking ensures only used plugins are included in your final bundle.

Type Safety

Full TypeScript support with comprehensive type definitions.

Flexible Architecture

Choose between composables, components, or standalone plugins.

Performance Features

Lazy Loading

Plugins are loaded only when needed, reducing initial bundle size.

Modular Design

Each plugin is independent and can be used separately or together.

Modern Standards

Built with latest Vue 3 patterns and ES6+ features.

Ready to get started?

Join developers who are already using @meersagor/wavesurfer-vue to build amazing audio experiences.

Package Information

Everything you need to know about @meersagor/wavesurfer-vue

Package Details

Name:@meersagor/wavesurfer-vue
Version:
2.0.0
License:
MIT
Last Updated:2025-08-31
Description:

Vue 3 composables and components for WaveSurfer.js with modular plugin architecture

Installation

Using npm:

npm install @meersagor/wavesurfer-vue

Using yarn:

yarn add @meersagor/wavesurfer-vue

Keywords

wavesurfer
vue
vue3
composable
plugins
modular
audio
waveform
player
recorder
timeline
zoom
minimap

Package Stats

2,412+
Downloads
34+
GitHub Stars
2.0.0
Version
MIT
License

Dependencies

vue
^3.5.12
wavesurfer.js
^7.10.1

Ready to install?

Get started with @meersagor/wavesurfer-vue in your Vue 3 project.

Installation Guide
Open Source

Contribute to the Ecosystem

Join our community and help improve both the WaveSurfer Vue package and this documentation site. Every contribution, big or small, makes a difference.

Package Contributions

Help improve the @meersagor/wavesurfer-vue package

Bug Reports

Report issues

Feature Requests

Suggest improvements

Code Changes

Submit PRs

Documentation

Improve docs

34+

Stars

6+

Forks

2+

Contributors

Documentation Site

Help improve this documentation website

Content Updates

Improve docs

Code Examples

Add examples

UI/UX Improvements

Enhance design

Bug Fixes

Fix issues

2+

Pages

10+

Examples

2+

Contributors

Join Our Community

Connect with other developers and stay updated with the latest features

GitHub

Star, fork, and contribute to our repositories

Follow @meer-sagor

Discussions

Join discussions and ask questions

Start Discussion

Support

Show your support by starring our projects

Star Project