Embed a Chromium-based Swing/JavaFX component into your Java application to display modern web pages built with HTML5, CSS3, JavaScript, Flash etc.

Why JxBrowser

Clear API & Docs

Prompt Support

With a single-point support portal we are focused on your smooth experience with our library.

Developers’ Choice

Selected by 863 commercial and 33 open source projects worldwide since 2007.

Proven Expertise

Created by a team with years of hands-on experience of integrating Java code.

371 companies worldwide build software using JxBrowser

Here are just a few to name:

Airbus S.A.S. Renault Group Caterpillar Inc Pfizer Inc Infosys Technologies Limited Sky Fujitsu Limited Wincor Nixdorf AG GE Healthcare Raytheon Company TRUSTe European Patent Office Deloitte Consulting Miele Immer Besser Sungard Data Systems Inc

Simple Integration

Java Swing App

  • /.../
    • /*
    • * Copyright (c) 2000- TeamDev Ltd. All rights reserved.
    • * Use is subject to license terms.
    • */
  • import ...
    • import com.teamdev.jxbrowser.chromium.Browser;
    • import com.teamdev.jxbrowser.chromium.swing.BrowserView;
    • import javax.swing.*;
    • import java.awt.*;
  • /**...*/
    • /**
    • * This sample demonstrates how to create Browser instance,
    • * embed it into Swing container, display it in JFrame, and
    • * navigate to the "www.google.com" website.
    • */
  • public class JavaSwingSample {...
    • public static void main(String[] args) {...
      • Browser browser = new Browser();
      • BrowserView view = new BrowserView(browser);
      • JFrame frame = new JFrame();
      • frame.add(view, BorderLayout.CENTER);
      • frame.setSize(700, 500);
      • frame.setVisible(true);
      • browser.loadURL("http://www.google.com");

JavaFX App

  • /.../
    • /*
    • * Copyright (c) 2000- TeamDev Ltd. All rights reserved.
    • * Use is subject to license terms.
    • */
  • import ...
    • import com.teamdev.jxbrowser.chromium.Browser;
    • import com.teamdev.jxbrowser.chromium.javafx.BrowserView;
    • import javafx.application.Application;
    • import javafx.scene.Scene;
    • import javafx.scene.layout.BorderPane;
    • import javafx.stage.Stage;
  • /**...*/
    • /**
    • * This sample demonstrates how to embed Browser instance
    • * into JavaFX control, display the control on scene, and
    • * navigate to the "www.google.com" website.
    • */
  • public class JavaFXSample extends Application {...
    • @Override
    • public void start(final Stage primaryStage) {...
      • Browser browser = new Browser();
      • BrowserView view = new BrowserView(browser);
      • Scene scene = new Scene(new BorderPane(view), 700, 500);
      • primaryStage.setScene(scene);
      • primaryStage.show();
      • browser.loadURL("http://www.google.com");
    • public static void main(String[] args) {...
      • launch(args);

How You Can Use JxBrowser

Cross-desktop Apps that require web browser capabilities Google Maps in your Java Desktop Apps Automated Tests for web applications or services Taking Screenshots of web pages
Cross Desktop Apps

JxBrowser can be used to display modern web pages and HTML+CSS+JavaScript content in your Java applications. It allows building GUI of your cross-desktop application using any popular HTML5 UI toolkit.

Learn More

Using Google Maps API

Using JxBrowser you can embed Google Maps into your Java Desktop Apps and communicate with loaded map using JavaScript Google Maps API to zoom in/out, display a specified location, change map type, etc.

Learn More

Automated Testing

With full access to loaded web page’s DOM and JavaScript you can find DOM elements, extract useful information from document content, fill and submit web forms, execute custom JavaScript code, etc.

Learn More

Taking Screenshots

You can take a screenshot of a web page including hidden scrollable area and save it as an image file. This functionality can be used in developing a web service that provides image of a web page by its URL or for automated tests when you need to compare screenshots of the same web page to find regression and changes.

Learn More


Lightweight and Heavyweight Component

JxBrowser supports two rendering modes: lightweight and heavyweight.
In lightweight (off-screen) rendering mode Chromium engine renders web page off-screen using CPU.
In heavyweight (GPU-accelerated) mode the engine renders content into a native window embedded into your Java application using GPU. Learn more.

Flash Support

JxBrowser allows displaying Adobe Flash content. You will need to have PPAPI Flash plugin installed.
Learn more.

Browser Events

You can listen to different web browser events such as Load (StartLoadingFrame , FinishLoadingFrame, FailLoadingFrame , DocumentLoadedInFrame and DocumentLoadedInMainFrame), Title and Zoom change events. Render process events such as RenderCreated and RenderGone are also available. See example.

DOM Access

You can find required HTML elements by tag name or ID, get/set HTML element attributes, listen to different DOM events such as click, mousedown, keydown, keyup, load, unload etc. See example.

JavaScript Dialogs

JavaScript dialogs such as alert, confirmation, prompt, beforeunload, and file upload dialog can be handled using DialogHandler. You can choose whether a JavaScript dialog should be displayed or not and what the dialog should look like. See example.

Proxy, Basic, Digest, and NTLM authentication

With NetworkDelegate you can handle basic, digest, NTML, and Proxy authentications. Learn more.


You can zoom in, zoom out on a web page or set your own zoom level for the currently loaded web page. Zoom level is configured for each domain separately. To make sure that the zoom level for the web page is changed you can use ZoomListener. You can choose whether a JavaScript dialog should be displayed or not and what the dialog should look like. See example.

Accurate Web Display

The component displays images generated by Chromium engine. Because of this web pages will look exactly as in Google Chrome.


Using the CookieStorage object you can receive all the cookies including secure and HTTP-only ones, delete all the cookies or a specific one, create and register new cookies. See example.

Bidirectional JavaScript-Java Bridge

You can execute JavaScript code on the loaded web page and return the result of the execution to the Java side. You can work with JavaScript objects directly from Java. You can inject Java objects into JavaScript and work with Java objects from JavaScript. See example.

Custom Context Menu

ContextMenuHandler allows you to handle the situation when context menu should be displayed. You can build your own Swing context menu, using different useful information from ContextMenuParams, such as context menu location, selected text, link URL, link text, HTML element media type etc. See example.

HTML to Image

JxBrowser allows getting image representation of the loaded web page including the hidden scrollable area. The image can be saved in PNG, JPEG and other graphic formats. See example.

Console Listener

Using ConsoleListener you can listen to console message events including JavaScript errors. See example.

Load Handler

The LoadHandler allows you to handle navigation to any URL address and cancel it when it's necessary. See example.

Saving a Web Page

Browser.saveWebPage() allows you to save the loaded web page as a set of files. See example.

Web Standards

JxBrowser supports all the modern web standards including HTML5, CSS3 and JavaScript. In general JxBrowser supports the same web standards as Google Chrome.

Proxy Settings

You can configure each Browser instance to use its own proxy settings. Various configurations are supported: auto detect proxy, manual proxy configuration for HTTP, HTTPS, FTP, SOCKS protocols, direct proxy, proxy auto configuration files. See example.

Java Web Start and Java Applet

You can use JxBrowser library in Java applications that are deployed via Java Web Start or Java Applet. Read more in the Knowledge Base.


All pop-up windows can be handled with PopupHandler. It is you who decides whether a pop-up window should be displayed or not and how exactly you want it to be displayed (e.g. in a separate window, in your application tab etc.). See examples.


With JxBrowser you can set your own user-agent for all Browser instances. See example.

File Download and Upload

DownloadHandler allows you to handle file downloads and control whether a file should be downloaded or not. You can also receive notifications about download progress, speed, completion percentage, received bytes etc. See example.

When a user clicks the file upload INPUT element on a web page, the DialogHandler.onFileChooser() method will be invoked. Using this method you can display your own file chooser dialog where a user can select a file to upload.

Keyboard and Mouse Events Filter

You can filter all keyboard and mouse events before they are passed to the Chromium engine. See example.

Try the Demo

Run The Demo jxbrowserdemo.jnlp

Runs on Windows, Mac OS X & Linux with:

You can find the same Demo application in the /demo directory of JxBrowser distribution package and run it locally. More Details.

Getting Help

Ask a Question

We use Stack Overflow as a community forum for questions on JxBrowser implementation. Add #jxbrowser tag to your post to get found easily.

If you have an active support subscription you can submit requests related to your project on our support portal.

Evaluation Support

Standard Support

Premium Support

Your support is phenomenal... Your responsiveness is really helpful... I continue to be impressed with you and your team. John Michelsen, iTKO, Inc.
I've just purchased the license. I would like to thank Vladimir for an excellent support in a responsive manner. This really helped us to close the deal quickly. Maty Siman, Checkmarx Ltd

Technical FAQ

JxBrowser runs on Windows, Mac OS X, and Linux. More information on supported platforms is available on the System Requirements page page on the product support site.

No, all the required Chromium binaries are deployed with JxBrowser library. You even don’t need to install Google Chrome to work with JxBrowser.

Actual JxBrowser version is based on Chromium 49.0.2623.110 build.

Yes, you can use JxBrowser in Java Applet and JWS applications like standard Java library. You can find more information about it in JxBrowser Knowledge Base .

You can find a lot of examples in JxBrowser distribution package and online at our Knowledge Base.

A: The fully-qualified name for a class is the package name followed by the class name, separated by a period (.). For example: com.mycompany.myproduct.MyClass

A: This can be any class of your application. The only requirement is that it should be included into your Java application class path.

Licensing and Pricing*

By using our products or any related documentation, you accept the Terms and Conditions of the Product Licence Agreement.
The licensing policy has been updated starting with JxBrowser version 6. The summary of the changes is available on the Licence Changes page.

What You Get

  • Perpetual Licence.
  • Free distribution of our library included in your application.
  • One full year of Standard Support subscription including 55 of support.
  • Free updates, both minor and major within the period of active Standard Support subscription.
  • Optional Standard Support subscription renewal with 25% discount from the actual licence price.
  • 15% discount on other TeamDev products

Per Developer






Source Code


Standard Support


* Your country's tax fees may apply to licence purchases. They will be charged in addition to the prices specified.
* Prices are subject to change without prior notice from TeamDev. Request an official quote for the purpose of purchase processing.

Get Licences via Resellers

Become a Reseller

Licensing FAQ

A: First of all there are no more runtime files. You will only receive one licence file to use for development and distribution of your applicatons including our library. Also, you are now eligible for all updates, both major and minor, during your active Standard Support subscription period. Please take a look at the Licence Changes page devoted to the licensing changes for more detailed information.

A: All JxBrowser updates, both major and minor issued during the active Standard Support subscription period, are free of charge.

A: Upon purchase of licence you will receive a licence archive. The archive will contain licence.jar file. It is the licence that should be used in development process and included in your application when distributing it to end users. Inside the licence.jar you can find the teamdev.licenses file that contains information about your licence.

A: Major and minor version upgrades issued during the active Standard Support subscription period are free of charge. Upon expiration of the Standard Support subscription you can renew it with a 25% discount from the actual licence price.

A: You can distribute unlimited number of copies of your product with our library enclosed.

A: Yes, you can purchase JxBrowser Source Code Licence; it is provided on a per developer basis. Please contact our sales team if you are interested in this option.

A: You may want to purchase a Project licence, which is cost-effective in case there are 3 and more developers on the team.

A: The Project licence is bound to a single project you do, but it allows any number of developers in your company to work with our library.

A: When we say “project” we have in mind one product of your company including your future product versions or potential derivative works based on your product.

A: The best solution would be to purchase a Company–wide licence, which covers any number developers and projects in one company.

A: The Project licence is tied to one project only.

If you are doing an open source or academic project, you can apply to get a free licence. Please submit a request via Open Source or Academic tab on the evaluation form.


Commercial Open source Academic

With this licence you will be able to evaluate our product for 30 days.
The evaluation licence will not work after this time, so you will need to purchase the licence.

With this licence you will be able to evaluate our product for 30 days.
The evaluation licence will not work after this time. If you are doing an open source project, you can request a permanent licence via the link provided in the email you will receive.

With this licence you will be able to evaluate our product for 30 days.
The evaluation licence will not work after this time. You can request a licence for duration of your academic project via the link provided in the email you will receive.

You should have an existing open source project which has commits and some life period of the project.

We can provide licences only for projects distributed under non-viral licence (LGPL, Apache, etc.). Our library is proprietary and we will not be able to disclose its code.


Please list other technologies, it may help in support.