We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

Trusted by the world’s leading companies

Syncfusion Trusted Companies


JavaScript TreeView is a graphical user interface control that to represents hierarchical data in a tree structure. It provides great performance with its advanced features like load on demand, checkbox support, multiple selection, tree navigation, drag and drop, tree node editing, and template support.

JavaScript TreeView data binding from different data sources

Data binding

Bind data to the JavaScript TreeView control from any valid data source, such as XML, JSON, and JSONP. The tree data can be local or remote data and fetched using different kinds of adaptors like OData, OData V4, URL, JSON, and Web API.

Load on demand

The JavaScript TreeView (HTML5 TreeView) control has a load-on-demand option that allows you to load huge amounts of data dynamically, which improves the control’s performance.

Also, child nodes in the control can be loaded from any web services or inserted dynamically.

Tree node with icons

Display nodes with labels and icons to present the content in a more readable format. This is helpful in making a typical directory tree and file system.


The JavaScript TreeView control provides built-in support for checkboxes, allowing users to select more than one item.

The tree view checkbox has a tri-state mode also, which is applicable only for parent nodes. In this mode, the parent node will go into the indeterminate state when the child nodes are partially checked.

Drag and drop

HTML5 JavaScript TreeView control drag and drop inside a tree

Inside the tree

Tree nodes can be dragged and dropped from one parent node to another within the same level or at different levels.

HTML5 JavaScript TreeView control drag and drop between trees

Outside the tree

Extending the drop behavior allows users to drop tree nodes from one tree view to another.

HTML5 JavaScript TreeView control dragging and dropping to external container

External container

Drop tree nodes to any external container or component by extending the tree view node drop action.

Multiple node selection

The JavaScript TreeView control allows users to select multiple nodes. When the drag-and-drop feature is enabled, all the selected nodes can be dragged at the same time.

HTML5 JavaScript TreeView multiple node selection

HTML5 JavaScript TreeView multiple node drag and drop

HTML5 JavaScript TreeView multiple node drag and drop

Editable nodes

Edit the tree nodes’ label text on the client side by double-clicking it. When editing tree view nodes, the tree view data source will also be updated with the modified data.

Sorting tree nodes

Render the tree view nodes in the ascending or descending order based on the label text for improved readability.

Node template

The TreeView control can be customized through its node template support, which allows defining a custom structure for tree nodes. You can use node templates specifically for parent nodes, child nodes, or both, and include images and any custom element structure.

Expand collapse icons

Easily customize the expand and collapse icons based on the requirement of your application.

Right to left (RTL)

Supports right-to-left (RTL) direction for users working with right-to-left languages like Hebrew, Arabic, or Persian.

Web accessibility

  • Fully supports WAI-ARIA accessibility guidelines for working with screen readers and assistive devices.
  • Follows WAI-ARIA best practices for implementing keyboard interaction.
  • Designs the UI element visuals such as foreground color, background color, line spacing, text, and images based on WCAG 2.0 standard.

Developer-friendly APIs

The TreeView control for JavaScript has a rich set of developer-friendly APIs to control all UI elements and behaviors, allowing you to provide the best experience to your end users.

JavaScript TreeView Code Example

Easily get started with the JavaScript TreeView using a few simple lines of HTML and TSX code as demonstrated below. Also explore our JavaScript TreeView Example that shows you how to render and configure the treeview in JavaScript.

<div id="tree"></div>
import { TreeView } from '@syncfusion/ej2-navigations';
let data: { [key: string]: Object }[] = [
    { "id": "01", "name": "Local Disk (C:)", "expanded": true,
            "subChild": [
                    "id": "01-01", "name": "Program Files",
                    "subChild": [
                        { "id": "01-01-01", "name": "Windows NT" },
                        { "id": "01-01-02", "name": "Windows Mail" },
                        { "id": "01-01-03", "name": "Windows Photo Viewer" }
                    "id": "01-02", "name": "Users", "expanded": true,
                    "subChild": [
                        { "id": "01-02-01", "name": "Smith" },
                        { "id": "01-02-02", "name": "Public" },
                        { "id": "01-02-03", "name": "Admin" }
                    "id": "01-03", "name": "Windows",
                    "subChild": [
                        { "id": "01-03-01", "name": "Boot" },
                        { "id": "01-03-02", "name": "FileManager" },
                        { "id": "01-03-03", "name": "System32" }
            "id": "02", "name": "Local Disk (D:)",
            "subChild": [
                    "id": "02-01", "name": "Personals",
                    "subChild": [
                        { "id": "02-01-01", "name": "My photo.png" },
                        { "id": "02-01-02", "name": "Rental document.docx" },
                        { "id": "02-01-03", "name": "Pay slip.pdf" }
                    "id": "02-02", "name": "Projects",
                    "subChild": [
                        { "id": "02-02-01", "name": "ASP Application" },
                        { "id": "02-02-02", "name": "TypeScript Application" },
                        { "id": "02-02-03", "name": "React Application" }
                    "id": "02-03", "name": "Office",
                    "subChild": [
                        { "id": "02-03-01", "name": "Work details.docx" },
                        { "id": "02-03-02", "name": "Weekly report.docx" },
                        { "id": "02-03-03", "name": "Wish list.csv" }
            "id": "03", "name": "Local Disk (E:)", "icon": "folder",
            "subChild": [
                    "id": "03-01", "name": "Pictures",
                    "subChild": [
                        { "id": "03-01-01", "name": "Wind.jpg" },
                        { "id": "03-01-02", "name": "Stone.jpg" },
                        { "id": "03-01-03", "name": "Home.jpg" }
                    "id": "03-02", "name": "Documents",
                        "subChild": [
                        { "id": "03-02-01", "name": "Environment Pollution.docx" },
                        { "id": "03-02-02", "name": "Global Warming.ppt" },
                        { "id": "03-02-03", "name": "Social Network.pdf" }
                    "id": "03-03", "name": "Study Materials",
                    "subChild": [
                        { "id": "03-03-01", "name": "UI-Guide.pdf" },
                        { "id": "03-03-02", "name": "Tutorials.zip" },
                        { "id": "03-03-03", "name": "TypeScript.7z" }
    let treeObj: TreeView = new TreeView({
        fields: { dataSource: data, id: 'id', text: 'name', child: 'subChild' }

Other supported frameworks

The TreeView component is also available in Blazor, React, Angular, and Vue frameworks. Check out the different TreeView platforms from the links below,


Frequently Asked Questions

  • Display hierarchical data in a tree-view structure.
  • Load a wide range of nodes with optimal performance.
  • Flexible data binding with support to use local and remote data sources such as JSON, RESTful services, OData services, and WCF services.
  • Drag and drop multiple selected tree nodes anywhere.
  • Select multiple nodes using built-in check boxes.
  • Edit node text in-line with editable nodes support.
  • Easily customize nodes, expand icons, and collapse icons.
  • One of the best JavaScript Treeview in the market that offers feature-rich UI to interact with the software.
  • Simple configuration and API.
  • Supports all modern browsers.
  • Mobile-touch friendly and responsive.
  • Expansive learning resources such as demos and documentation to learn quickly and get started with JavaScript Tree View.

You can find our JavaScript Tree View demo here.

No, this is a commercial product and requires a paid license. However, a free community license is also available for companies and individuals whose organizations have less than $1 million USD in annual gross revenue and five or fewer developers.

A good place to start would be our comprehensive getting started documentation.

Our Customers Love Us

Having an excellent set of tools and a great support team, Syncfusion reduces customers’ development time.
Here are some of their experiences.

Rated by users across the globe

Transform your applications today by downloading our free evaluation version Download Free Trial


Greatness—it’s one thing to say you have it, but it means more when others recognize it. Syncfusion is proud to hold the following industry awards.

Up arrow icon

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

Live Chat Icon For mobile