Skip to content
πŸ™ Embetty displays remote content like tweets or YouTube videos without compromising your privacy.
Branch: develop
Clone or download
Latest commit 765104c Jun 19, 2019

embetty Β· Build Status Greenkeeper badge Dependency Status JavaScript Style Guide


Embetty displays remote content like tweets or videos without compromising your privacy.

See it in action on our demo pages.

Quick Start

  1. Setup your embetty-server.
  2. Include the embetty lib into your HTML document.
  3. Insert an embed by using a custom tag (see embeds section below).


<!DOCTYPE html>
<html lang="en">
  <meta data-embetty-server="/path/to/embetty-server">
  <script async src="embetty.js"></script>
  <embetty-tweet status="950371792874557440"></embetty-tweet>


Configure the Embetty server

Embetty needs a server component that you need to run on your infrastructure. Configure the server URL for embetty using a <meta data-embetty-server> tag:

  <meta data-embetty-server="/path/to/embetty-server">

Including embetty.js

There are three options.

  1. Download an Embetty archive from the releases page. Make embetty.js available on your site.
  2. Use Embetty in your npm project: yarn add @heise/embetty or npm install @heise/embetty --save. Then import embetty into your main script (i.e. import '@heise/embetty').
  3. Clone this repository and build ./dist/embetty.js:
    $ git clone
    $ cd embetty
    $ yarn
    $ yarn build

Supported embed types

Currently, tweets and various video platforms are supported.


Use the status attribute to embed a tweet with its tweet ID. Example:

<embetty-tweet status="950371792874557440"></embetty-tweet>


Use the type attribute with a value of facebook, vimeo or youtube. Set the video-id attribute to the video ID.

<embetty-video type="facebook" video-id="10156049485672318"></embetty-video>

For videos of type vimeo or youtube, it's also possible to set a start-at attribute with a value of time in seconds to start the video at a specific timecode.

<embetty-video type="youtube" start-at="96" video-id="3L4fHrIJ3A4"></embetty-video>
<embetty-video type="vimeo" start-at="96" video-id="223099532"></embetty-video>


Embetty triggers the following events:

Name Description
initialized The Embetty embed will enter the viewport after this has been triggered.
activated The Embetty video embed has been replaced with an iframe containing the original video player. The content of the iframe may still be loading.

Example code:

document.querySelector('embetty-tweet').addEventistener('initialized', function(e) { ... })


The Embetty server component does not proxy video data. This means that the tracking protection becomes ineffective after the play button has been clicked.


Embetty is MIT licensed.

You can’t perform that action at this time.