diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f38bb1d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,100 @@
+# TikTok-Live-Java
+A Node.js library to receive live stream events such as comments and gifts in realtime from [TikTok LIVE](https://www.tiktok.com/live) by connecting to TikTok's internal WebCast push service. The package includes a wrapper that connects to the WebCast service using just the username (`uniqueId`). This allows you to connect to your own live chat as well as the live chat of other streamers. No credentials are required. Besides [Chat Comments](#chat), other events such as [Members Joining](#member), [Gifts](#gift), [Subscriptions](#subscribe), [Viewers](#roomuser), [Follows](#social), [Shares](#social), [Questions](#questionnew), [Likes](#like) and [Battles](#linkmicbattle) can be tracked. You can also send [automatic messages](#send-chat-messages) into the chat by providing your Session ID.
+
+
+Do you prefer other programming languages?
+- **Node** orginal: [TikTok-Live-Connector](https://github.com/isaackogan/TikTok-Live-Connector) by [@isaackogan](https://github.com/isaackogan)
+- **Python** rewrite: [TikTokLive](https://github.com/isaackogan/TikTokLive) by [@isaackogan](https://github.com/isaackogan)
+- **Go** rewrite: [GoTikTokLive](https://github.com/Davincible/gotiktoklive) by [@Davincible](https://github.com/Davincible)
+- **C#** rewrite: [TikTokLiveSharp](https://github.com/frankvHoof93/TikTokLiveSharp) by [@frankvHoof93](https://github.com/frankvHoof93)
+
+**NOTE:** This is not an official API. It's a reverse engineering project.
+
+#### Overview
+- [Getting started](#getting-started)
+- [Params and options](#params-and-options)
+- [Methods](#methods)
+- [Events](#events)
+- [Examples](#examples)
+- [Contributing](#contributing)
+
+## Getting started
+
+1. Install the package via NPM
+```
+npm i tiktok-live-connector
+```
+
+2. Create your first chat connection
+
+```java
+ public static void main(String[] args)
+ {
+ // Username of someone who is currently live
+ var tiktokUsername = "officialgeilegisela";
+
+ TikTokLive.newClient(tiktokUsername)
+ .onConnected(event ->
+ {
+ System.out.println("Connected");
+ })
+ .onJoin(event ->
+ {
+ System.out.println("User joined -> " + event.getUser().getNickName());
+ })
+ .onComment(event ->
+ {
+ System.out.println(event.getUser().getUniqueId() + ": " + event.getText());
+ })
+ .onError(event ->
+ {
+ event.getException().printStackTrace();
+ })
+ .buildAndRun();
+ }
+```
+
+## Methods
+A `TikTokLive` object contains the following methods.
+
+| Method Name | Description |
+| ----------- | ----------- |
+| connect | Connects to the live stream chat.
Returns a `Promise` which will be resolved when the connection is successfully established. |
+| disconnect | Disconnects the connection. |
+| getRoomInfo | Gets the current room info from TikTok API including streamer info, room status and statistics. |
+
+## Events
+
+A `TikTokLive` object has the following events
+
+Control Events:
+- [connected](#connected)
+- [disconnected](#disconnected)
+- [streamEnd](#streamend)
+- [rawData](#rawdata)
+- [websocketConnected](#websocketconnected)
+- [error](#error)
+
+Message Events:
+- [member](#member)
+- [chat](#chat)
+- [gift](#gift)
+- [roomUser](#roomuser)
+- [like](#like)
+- [social](#social)
+- [emote](#emote)
+- [envelope](#envelope)
+- [questionNew](#questionnew)
+- [linkMicBattle](#linkmicbattle)
+- [linkMicArmies](#linkmicarmies)
+- [liveIntro](#liveintro)
+- [subscribe](#subscribe)
+
+Custom Events:
+- [follow](#follow)
+- [share](#share)
+
+
+
+## Contributing
+Your improvements are welcome! Feel free to open an issue or pull request.