---
title: "Announcing Tinybird Charts: Fast Real-Time Charts, Even Faster"
excerpt: "Tinybird Charts turns your APIs into visualizations instantly. No frontend code required. See your data in seconds."
authors: "Tinybird"
categories: "Product updates"
createdOn: "2024-06-06 00:00:00"
publishedOn: "2024-06-12 00:00:00"
updatedOn: "2025-04-24 00:00:00"
status: "published"
---

<p>Today, we are releasing Tinybird Charts, a set of built-in visualization components that enable you to turn your real-time data into fast charts, even faster than before. Tinybird Charts is available to all Tinybird customers across all Tinybird pricing plans.</p><p>Our mantra at Tinybird is <strong>Speed Wins</strong>. These days, all databases are fast, but Tinybird is the real-time data platform that also makes YOU fast.</p><blockquote>When we moved [our] use cases to Tinybird, we shipped them 5x faster and at a 10x lower cost than our prior approach." - Guy Needham, Staff Backend Engineer at Canva</blockquote><p>Let’s see how easy it is to turn real-time data into a visualization. Already with Tinybird, you’ve been able to ingest data from anywhere with just a few clicks (or a single command-line instruction). From there, you can build Pipes using SQL, a language you already know. And then, you can turn any Pipe into a high-concurrency, low-latency REST API.</p><p>Now, you can turn any Pipe into a Tinybird Chart.</p><figure class="kg-card kg-video-card kg-width-regular" data-kg-thumbnail="https://tinybird-blog.ghost.io/content/media/2024/06/charts_release_full_create_thumb.jpg" data-kg-custom-thumbnail="">
            <div class="kg-video-container">
                <video src="https://tinybird-blog.ghost.io/content/media/2024/06/charts_release_full_create.mp4" poster="https://img.spacergif.org/v1/1854x1080/0a/spacer.png" width="1854" height="1080" playsinline="" preload="metadata" style="background: transparent url('https://tinybird-blog.ghost.io/content/media/2024/06/charts_release_full_create_thumb.jpg') 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"></path>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"></path>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"></rect>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"></rect>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">0:26</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1×</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"></path>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"></path>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>

        </figure><p>In that example, we exported our chart as a React component, added it to our Next.js app and had a brand new chart in 25 seconds.</p><p>But what if I wanted to add a pie chart to this blog? Our blog is powered by <a href="https://ghost.org/"><u>Ghost</u></a>, and I don’t want to edit the code that’s rendering the content. So I need to be able to embed the chart directly into the post content.</p><p>Something that looks a bit like this?</p>
<!--kg-card-begin: html-->
<iframe
  src="https://app.tinybird.co/gcp/europe-west3/endpoints/meal_choice_distribution/charts/1f9d98ca-66db-4c1e-a927-be90aca47a27?token=p.eyJ1IjogIjg0NjBkMmI0LTYyZTgtNGJhMi1hYmNlLTI0YjU4MDZmYjQwNiIsICJpZCI6ICIzMDViYzY2MS01NDI5LTQ5ZjktODhjYy1lYjFlM2EyYjNmMmEiLCAiaG9zdCI6ICJldV9zaGFyZWQifQ.AgAp9FVnReXr4dYA7hTRT4fR0DRjf7Bg7jn1jfSF00Q"
  width="100%"
  height="500px"
  style="border: none;"
>
</iframe>
<!--kg-card-end: html-->
<p>Take a peek behind the fourth wall!</p><figure class="kg-card kg-video-card kg-width-regular" data-kg-thumbnail="https://tinybird-blog.ghost.io/content/media/2024/06/charts_launch_fourth_wall_thumb.jpg" data-kg-custom-thumbnail="">
            <div class="kg-video-container">
                <video src="https://tinybird-blog.ghost.io/content/media/2024/06/charts_launch_fourth_wall.mp4" poster="https://img.spacergif.org/v1/1880x1080/0a/spacer.png" width="1880" height="1080" playsinline="" preload="metadata" style="background: transparent url('https://tinybird-blog.ghost.io/content/media/2024/06/charts_launch_fourth_wall_thumb.jpg') 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"></path>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"></path>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"></rect>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"></rect>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">0:35</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1×</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"></path>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"></path>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>

        </figure><p>That's it!</p><p>We’re shipping Tinybird Charts with eight different visualizations, and we’ll be adding more quickly. If you have a favorite chart you want to see, <a href="https://www.tinybird.co/community"><u>join our Community Slack</u></a> and request it.</p><p>Under the covers, we use <a href="https://echarts.apache.org/en/index.html"><u>Apache ECharts</u></a>, an open-source Javascript visualization library that gives you the flexibility to adapt Tinybird Charts for your design and brand aesthetic. It is our intent to rapidly iterate on Tinybird Charts and deliver more visualizations based on your needs. Be sure to <a href="https://www.tinybird.co/community"><u>let us know</u></a> what you want us to prioritize!</p><p>Check out our <a href="https://www.tinybird.co/docs/publish/charts"><u>documentation</u></a> to learn more about Tinybird Charts, or jump straight in with an <a href="https://www.tinybird.co/docs/classic/publish-data/charts/guides/add-charts-to-nextjs"><u>end-to-end guide for Tinybird Charts and Next.js</u></a>. To see Tinybird Charts in action, watch the Screencast below:</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/gGOMX-C7yrY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="Tinybird Screencast - Build fast charts, faster, with Tinybird Charts"></iframe></figure>
