diff --git a/README.md b/README.md
index 05e80bc..829c810 100644
--- a/README.md
+++ b/README.md
@@ -3,4 +3,200 @@
[![npm](https://img.shields.io/npm/v/usesync?color=red)](https://www.npmjs.com/package/usesync)
A custom React hook to synchronize and share public state across different components on your React project.
-***
\ No newline at end of file
+***
+
+## Table of Contents
+- [Installation](#installation)
+- [Usage](#usage)
+- [Notes](#notes)
+- [License](#license)
+
+## Installation:
+
+Install the hook from **npm**:
+```bash
+$ npm install usesync --save
+```
+
+Then simply require it:
+```js
+const { useSync, sync, storage } = require("usesync")
+```
+or
+```js
+import useSync, { sync, storage } from "usesync"
+```
+
+## Usage:
+### useSync(id: string)
+
+This is the hook that you will use across your React components, the function registers them under a specific ID you will give:
+```js
+const Component = () => {
+ useSync('hello')
+ return (
+
+ Hello World!
+
+ )
+}
+```
+
+To synchronize multiple components simply call the hook inside them and give the same ID:
+```js
+const ComponentA = () => {
+ useSync('hello')
+ return (
+
+ )
+}
+```
+
+You can use the hook on a component for multiple times with multiple IDs:
+```js
+const Component = () => {
+ useSync('id num 1')
+ useSync('id num 2')
+ return (
+
+ Hello World!
+
+ )
+}
+```
+
+**Note:** it is possible to dynamically update a hook ID on a component with no issue.
+
+### sync(id: string)
+
+The hook alone does nothing, to synchronize components registered under a specific ID you need to call this function, it causes to re-render all of them, here is an example:
+```js
+import React from 'react'
+import ReactDOM from 'react-dom'
+import useSync, { sync } from "usesync"
+
+const ComponentA = () => {
+ useSync('Components')
+ return (
+
+ )
+}
+
+ReactDOM.render(, document.getElementById('app'))
+```
+Try it on [CodePen](https://codepen.io/imrdjai/pen/zYKQzqw)!
+
+### storage: object
+
+This is just an extra object publicly available across your app can be used to store data, you can put states for your componenets there, here is an example:
+```js
+import React from 'react'
+import ReactDOM from 'react-dom'
+import useSync, { sync, storage } from "usesync"
+
+storage.randomNumber = Math.random()
+
+const ComponentA = () => {
+ useSync('Components')
+ return (
+