Advanced Real-Time Chart Widget

Here's a free and powerful chart for you to easily embed onto any website. Make it yours with a ton of different customization options.

Embed code

HTML
React

Settings

Chart background
Grid
x
Reset Apply

Live Examples

Some examples of how our charts are used on financial websites:

Demos

Technical Analysis
Basic Area Chart
Watchlist
Analytics platform

If you want to please advanced chartists, give them all available drawings - there are over 100 of them! You can also add indicators that will appear by default on the widget. Of course, you can also let your chartists use the 80+ indicators that are included. Possibilities are limitless - you can add things like a second price scale on the left, and change it between a Percentage and Log scales. You can also compare several symbols by overlaying them, or onto different subscharts one over another.

Embed code

HTML
React

If you just want to have a basic financial chart for the general user, it makes sense not to overload the widget with extra options. You may also want to make it an Area chart, which is the most basic charting type - and looks great without taking up too much space!. If it's still too much, take a look at our Market Overview and Symbol Overview widgets.

Embed code

HTML
React

You can add a watchlist, which is linked to the chart. When you click on a symbol in the watchlist, it will change on the chart. You can add a predefined list, or change it dynamically, depending on what you want to show your users.

Embed code

HTML
React

You can add more panels, such as the top losers and gainers hotlists, details for each symbol, and the economic calendar - turning a simple chart into a full-blown analytics platform.

Embed code

HTML
React

Frequently Asked Questions

Exchanges want each website to pay fees for real-time data. As per their requirements we are only allowed to stream delayed data. Here's a list of what's available. Forex and crypto data is real-time.

We get data from many exchanges around the globe and keep adding new ones on a regular basis. Some exchanges are not yet supported. Available markets are listed here. Can't find the data you need to display? Please specify using this form.

It is not possible to add pine scripts to widgets at this time. You can publish an idea with your script and embed it.

It is not possible to add strategies to widgets at this time. You can publish an idea with your strategy and embed it.

This means we are not allowed to show that symbol in any timeframe in the widgets.

No. Paid upgraded plans do not affect the data in the widgets. Any upgraded plan affects your TradingView profile only. To get real-time data on your website, contact the exchange directly.

We don't have an API that gives access to data. Our REST API is meant for brokers who want to be supported on our trading platform.

It is not possible to download or export data from TradingView at this time.

We provide widgets as a technology piece for FREE with default TradingView branding. However, we have other options available, please reach out to us here.

There are several options, contact us using this form.

Use the Autosize setting. When autosize is on, the widget uses 100% of available width and/or height of the enclosing element. It's very important to set a specific height of parent element for the widget to work properly.

All available widget settings are presented in the point-and-click constructor. If what you want to change is not there, contact us using this form.

Yes. Here are some hints:

  1. Copy and paste the widget script somewhere on the page:
    <script type="text/javascript" src="https://s3.tradingview.com/tv.js"></script>
  2. Create a container element with a set ID attribute.
  3. Сall the new TradingView.widget() function when you want the widget to be shown. Apart from other settings, there should also be a container_id option in the parameter list. It should have the value of the previously created container ID attribute.

Potentially, the problem can arise from trying to insert the raw code dynamically, thus forcing the browser to block the embedded script execution. This may happen when injection via innerHTML occurs, for instance. Trying to dynamically inject the code with the means of certain libraries (e.g. jQuery) may also disrupt the proper initialization of the widget. If you are embedding the code on a site driven by 3rd party infrastructure, make sure to follow their instructions or ask the developer of the platform for help.

Contact us using this form.