---
title: "Zoho"
description: "Zoho WorkDrive"
versionIntroduced: "v1.54"
---

# Zoho Workdrive

[Zoho WorkDrive](https://www.zoho.com/workdrive/) is a cloud storage solution
created by [Zoho](https://zoho.com).

## Configuration

Here is an example of making a zoho configuration.  First run

```console
rclone config
```

This will guide you through an interactive setup process:

```text
No remotes found, make a new one?
n) New remote
s) Set configuration password
n/s> n
name> remote
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
[snip]
XX / Zoho
   \ "zoho"
[snip]
Storage> zoho
** See help for zoho backend at: https://rclone.org/zoho/ **

OAuth Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id> 
OAuth Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret> 
Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n> n
Remote config
Use web browser to automatically authenticate rclone with remote?
 * Say Y if the machine running rclone has a web browser you can use
 * Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.
y) Yes (default)
n) No
y/n> 
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=LVn0IHzxej1ZkmQw31d0wQ
Log in and authorize rclone for access
Waiting for code...
Got code
Choose a number from below, or type in your own value
 1 / MyTeam
   \ "4u28602177065ff22426787a6745dba8954eb"
Enter a Team ID> 1
Choose a number from below, or type in your own value
 1 / General
   \ "4u2869d2aa6fca04f4f2f896b6539243b85b1"
Enter a Workspace ID> 1
Configuration complete.
Options:
- type: zoho
- token: {"access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","token_type":"Zoho-oauthtoken","refresh_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","expiry":"2020-10-12T00:54:52.370275223+02:00"}
- root_folder_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Keep this "remote" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> 
```

See the [remote setup docs](/remote_setup/) for how to set it up on a
machine without an internet-connected web browser available.

Rclone runs a webserver on your local computer to collect the
authorization token from Zoho Workdrive. This is only from the moment
your browser is opened until the token is returned.
The webserver runs on `http://127.0.0.1:53682/`.
If local port `53682` is protected by a firewall you may need to temporarily
unblock the firewall to complete authorization.

Once configured you can then use `rclone` like this (replace `remote` with the
name you gave your remote):

See top level directories

```console
rclone lsd remote:
```

Make a new directory

```console
rclone mkdir remote:directory
```

List the contents of a directory

```console
rclone ls remote:directory
```

Sync `/home/local/directory` to the remote path, deleting any
excess files in the path.

```console
rclone sync --interactive /home/local/directory remote:directory
```

Zoho paths may be as deep as required, eg `remote:directory/subdirectory`.

### Modification times and hashes

Modified times are currently not supported for Zoho Workdrive

No hash algorithms are supported.

### Usage information

To view your current quota you can use the `rclone about remote:`
command which will display your current usage.

### Restricted filename characters

Only control characters and invalid UTF-8 are replaced. In addition most
Unicode full-width characters are not supported at all and will be removed
from filenames during upload.

<!-- autogenerated options start - DO NOT EDIT - instead edit fs.RegInfo in backend/zoho/zoho.go and run make backenddocs to verify --> <!-- markdownlint-disable-line line-length -->
### Standard options

Here are the Standard options specific to zoho (Zoho).

#### --zoho-client-id

OAuth Client Id.

Leave blank normally.

Properties:

- Config:      client_id
- Env Var:     RCLONE_ZOHO_CLIENT_ID
- Type:        string
- Required:    false

#### --zoho-client-secret

OAuth Client Secret.

Leave blank normally.

Properties:

- Config:      client_secret
- Env Var:     RCLONE_ZOHO_CLIENT_SECRET
- Type:        string
- Required:    false

#### --zoho-region

Zoho region to connect to.

You'll have to use the region your organization is registered in. If
not sure use the same top level domain as you connect to in your
browser.

Properties:

- Config:      region
- Env Var:     RCLONE_ZOHO_REGION
- Type:        string
- Required:    false
- Examples:
  - "com"
    - United states / Global
  - "eu"
    - Europe
  - "in"
    - India
  - "jp"
    - Japan
  - "com.cn"
    - China
  - "com.au"
    - Australia

### Advanced options

Here are the Advanced options specific to zoho (Zoho).

#### --zoho-token

OAuth Access Token as a JSON blob.

Properties:

- Config:      token
- Env Var:     RCLONE_ZOHO_TOKEN
- Type:        string
- Required:    false

#### --zoho-auth-url

Auth server URL.

Leave blank to use the provider defaults.

Properties:

- Config:      auth_url
- Env Var:     RCLONE_ZOHO_AUTH_URL
- Type:        string
- Required:    false

#### --zoho-token-url

Token server url.

Leave blank to use the provider defaults.

Properties:

- Config:      token_url
- Env Var:     RCLONE_ZOHO_TOKEN_URL
- Type:        string
- Required:    false

#### --zoho-client-credentials

Use client credentials OAuth flow.

This will use the OAUTH2 client Credentials Flow as described in RFC 6749.

Note that this option is NOT supported by all backends.

Properties:

- Config:      client_credentials
- Env Var:     RCLONE_ZOHO_CLIENT_CREDENTIALS
- Type:        bool
- Default:     false

#### --zoho-root-folder-id

ID of the root folder.

Leave blank normally.

Fill in to make rclone use a non root folder as its starting point.

Properties:

- Config:      root_folder_id
- Env Var:     RCLONE_ZOHO_ROOT_FOLDER_ID
- Type:        string
- Required:    false

#### --zoho-upload-cutoff

Cutoff for switching to large file upload api (>= 10 MiB).

Properties:

- Config:      upload_cutoff
- Env Var:     RCLONE_ZOHO_UPLOAD_CUTOFF
- Type:        SizeSuffix
- Default:     10Mi

#### --zoho-tpslimit

Max number of API transactions per second.

Zoho WorkDrive rate limits its API and returns HTTP 429 (error F7008,
"Request rate limit exceeded") when called too quickly, so the data API
calls (list, upload, download, copy, move, delete) are paced to this rate.

Set to 0 to disable the cap, matching the global --tpslimit; pacing still
can't be turned off entirely because backoff and Retry-After always apply.

The default of 6 is a safe sustainable rate. Higher values can trigger long
429 Retry-After stalls that make throughput WORSE, so raise it only if your
account tolerates more.

Properties:

- Config:      tpslimit
- Env Var:     RCLONE_ZOHO_TPSLIMIT
- Type:        float64
- Default:     6

#### --zoho-tpslimit-burst

Number of API calls to allow back-to-back without sleeping, for --zoho-tpslimit.

This is the token-bucket capacity. Keep at 1 for Zoho: a burst > 1
lets several calls fire at once after an idle gap, which can trigger
synchronized clusters of 429 errors.

Properties:

- Config:      tpslimit_burst
- Env Var:     RCLONE_ZOHO_TPSLIMIT_BURST
- Type:        int
- Default:     1

#### --zoho-list-folder-limit

Max listings of the SAME folder allowed per --zoho-list-folder-window.

Zoho WorkDrive rate limits its listing API (GET files/{id}/files) PER
folder, independently of --zoho-tpslimit: listing one folder too often in a
short time returns HTTP 429 (error F7008) with a multi-minute Retry-After
penalty, which a tight polling loop can hit even at a low overall rate.
Measured live, Zoho allows ~19 listings of one folder in any rolling ~60s
window and the 20th fails, which the defaults (19 per 60s) model exactly.

This is a true per-window cap for any traffic pattern: each window starts
with --zoho-list-folder-burst listings passing back-to-back (the burst
re-arms at every window boundary) and the rest are spaced
--zoho-list-folder-window/(limit - burst) apart (the defaults give ~4.6s),
while a sliding log of recent listings enforces the cap across window
boundaries. 0 disables the limiter. Only REPEATED listings of one folder are
delayed; different folders, or a folder listed fewer than
--zoho-list-folder-burst times, never are.

A HIGHER value means MORE listings per window, not more safety: raising it
above 19 trips F7008. Lower it for a wider margin at the cost of listing
responsiveness.

Properties:

- Config:      list_folder_limit
- Env Var:     RCLONE_ZOHO_LIST_FOLDER_LIMIT
- Type:        int
- Default:     19

#### --zoho-list-folder-window

The window for --zoho-list-folder-limit.

The default of 60s (shown as 1m0s) matches Zoho's real sliding window: at
most --zoho-list-folder-limit listings of one folder are allowed in any
window of this length. A bare number is parsed as seconds ("60" = "60s").

Widen it (or lower the limit) for a bigger safety margin; the sustained
spacing between same-folder listings is window/(limit - burst).

Properties:

- Config:      list_folder_window
- Env Var:     RCLONE_ZOHO_LIST_FOLDER_WINDOW
- Type:        Duration
- Default:     1m0s

#### --zoho-list-folder-burst

Same-folder listings allowed back-to-back before --zoho-list-folder-limit paces them.

The burst is carved out of --zoho-list-folder-limit, so raising it never
raises the per-window total: this many listings may fire immediately and the
remaining limit - burst are spaced window/(limit - burst) apart. The burst
RE-ARMS at every window boundary, so sustained re-listing gets a fresh burst
each window while a sliding log of recent listings still enforces the
per-window cap. A folder listed only a handful of times (the common case - a
sync re-listing one directory a few times then moving on) never waits.

The default 6 is the largest burst validated live under the default 19-per-60s
cap (bursts of 4, 5 and 6 all ran clean; an over-cap probe tripped F7008
exactly at the 20th listing in a window). Keep it well below ~15 - Zoho also
has an instantaneous back-to-back cap around 15-16 regardless of the window.
Set to 1 to pace from the second listing. Values >= the limit are clamped to
limit - 1.

Properties:

- Config:      list_folder_burst
- Env Var:     RCLONE_ZOHO_LIST_FOLDER_BURST
- Type:        int
- Default:     6

#### --zoho-encoding

The encoding for the backend.

See the [encoding section in the overview](/overview/#encoding) for more info.

Properties:

- Config:      encoding
- Env Var:     RCLONE_ZOHO_ENCODING
- Type:        Encoding
- Default:     Del,Ctl,InvalidUtf8

#### --zoho-description

Description of the remote.

Properties:

- Config:      description
- Env Var:     RCLONE_ZOHO_DESCRIPTION
- Type:        string
- Required:    false

<!-- autogenerated options stop -->

## Setting up your own client_id

For Zoho we advise you to set up your own client_id. To do so you have to
complete the following steps.

1. Log in to the [Zoho API Console](https://api-console.zoho.com)

2. Create a new client of type "Server-based Application". The name and website
don't matter, but you must add the redirect URL `http://localhost:53682/`.

3. Once the client is created, you can go to the settings tab and enable it in
other regions.

The client id and client secret can now be used with rclone.
