Unleash Anime Streaming with One Line of Code

Embed high-quality anime streams into your own website with a simple <iframe>. Complete with adaptive HLS, dual-audio (Sub/Dub), and OP/ED skipping.


Live Demo

Test the embed player right here.

Enter an AniList ID and click "Load Player" to test the embed
Your embed preview will appear here

Start Embedding in 30 Seconds

Just copy-paste one line of HTML. That's it. No SDK, no API key, no setup.

Basic Anime Embed
<iframe
  src="https://anixo.buzz/embed/ani/{anilist-id}/{ep-num}/{language}"
  width="800"
  height="450"
  frameborder="0"
  allowfullscreen
  allow="autoplay; picture-in-picture"
></iframe>
With Autoplay & Custom Color
<iframe
  src="https://anixo.buzz/embed/ani/{anilist-id}/{ep-num}/{language}?autoplay=1&color=%236366f1"
  width="100%"
  height="100%"
  style="aspect-ratio: 16/9;"
  frameborder="0"
  allowfullscreen
></iframe>

Embed Routes

All available embed endpoints and their parameters.

Method Route Description
GET /embed/ani/:anilistId/:epNum/:audio Player Simple Anime embed route. Example: /embed/ani/154587/1/sub

Anime Embed Parameters

:anilistId Required The AniList ID of the anime. Example: 154587 for Frieren: Beyond Journey's End. Find it on anilist.co.
:epNum Required Episode number to play. Example: 1 for Episode 1.
:audio Required Audio track — either sub (Japanese + subtitles) or dub (English dubbed).

Query Parameters (Optional)

?autoplay Optional Set to 1 to auto-play the video when it loads. Default: 0.
?color Optional Custom accent color for the player UI. Use URL-encoded hex, e.g. %236366f1 for #6366f1.

PostMessage API

Control the embedded player and receive events from the parent page using window.postMessage().

Listen for Player Events
// Listen for events from the embedded player
window.addEventListener('message', (event) => {
  const { type, ...data } = event.data;

  if (type === 'aniko:ready') {
    console.log('Player loaded!', data);
    // { streams: 3, subtitles: 5, hasIntro: true, hasOutro: true }
  }

  if (type === 'aniko:timeupdate') {
    console.log('Time:', data.currentTime, '/', data.duration);
  }

  if (type === 'aniko:ended') {
    console.log('Episode finished — load next! AutoPlay:', data.autoPlay);
  }
});
Control the Player
const iframe = document.querySelector('iframe');

// Play / Pause
iframe.contentWindow.postMessage({ type: 'aniko:togglePlay' }, '*');

// Seek to 2 minutes
iframe.contentWindow.postMessage({ type: 'aniko:seek', time: 120 }, '*');

// Set volume to 50%
iframe.contentWindow.postMessage({ type: 'aniko:setVolume', volume: 0.5 }, '*');

// Change speed to 1.5x
iframe.contentWindow.postMessage({ type: 'aniko:setSpeed', speed: 1.5 }, '*');

// Set quality (level index, -1 for auto)
iframe.contentWindow.postMessage({ type: 'aniko:setQuality', level: -1 }, '*');

Events Reference

Event Data Description
aniko:ready streams, subtitles, hasIntro, hasOutro Player loaded and ready to play
aniko:play Video started playing
aniko:pause Video paused
aniko:timeupdate currentTime, duration Current playback position changed
aniko:ended autoPlay Video reached the end. autoPlay (boolean) indicates if user has Auto Play enabled.