# Unlimited Storage (using google cloud service accounts)

**URL:** <https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200>\
**Category:** Tutorials & Methods\
**Tags:** freebies, tips-tricks\
**Created:** [June 24, 2025, 8:40am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200 "2025-06-24T08:40:57Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Abc\_Xyz1](https://onehack.st/user_avatar/onehack.st/abc_xyz1/32/119447_2.png) [@Abc\_Xyz1](https://onehack.st/u/Abc_Xyz1)\
**Post date:** [June 24, 2025, 8:40am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/1 "2025-06-24T08:40:57Z")

</div>

- **Step 1** : Create service accounts using scripts (easily available on GitHub).
- **Step 2** : Install python library `pip install sadrive`.
- **Step 3** : Follow the steps from this repo [GitHub](https://github.com/jsmaskeen/sa-drive).  
You can find video [tutorials](https://github.com/jsmaskeen/sa-drive/tree/main/gui-deprecated) on how create service accounts and if you follow all the steps correctly you can get `roughly 17TiB of google drive storage per gmail account`.

---

<div class="post-metadata">

**Author:** ![SRZ](https://onehack.st/user_avatar/onehack.st/srz/32/146132_2.png) [@SRZ](https://onehack.st/u/SRZ)\
**Post date:** [June 24, 2025, 8:46am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/2 "2025-06-24T08:46:43Z")

</div>

This is bonkers… 🤙 Themmmmsssskkkkkk youmm. 🩷

People who don’t understand… let me breakdown for you 💃

* * *

[SA\_Drive\_SimpleKit.zip](https://onehack.st/uploads/short-url/gZ9dQdbVb1JKoXQ2v9EnpozrvRk.zip) (1.7 KB)

🧩 Just unzip this, drop all your `.json` keys into the `configs/` folder, then open terminal and run:  
bash start.sh

That’s it. No setup mess. No confusion. Just massive Google Drive power using old free accounts (each .json = 15GB).

* * *

### 🧩 What’s going on here?

> **Summary**
>
> This trick uses **old Google Drive accounts** (called service accounts) made **before April 15, 2025**. Each one still gets **15 GB free storage**.
> 
> You don’t use just one—you collect **many of them** and treat them like small containers. The tool then:
> 
> - Joins all the space together
> - Hides the switching in the background
> - Lets you upload/download like it’s one big drive
> 
> So instead of hitting a 15GB limit, it quietly moves to the next empty account, again and again.
> 
> * * *
> 
> ### 🧠 Why does this even work?
> 
> Because Google still gives 15GB to each of these _old_ accounts.
> 
> You’re just:
> 
> - Mounting them like folders
> - Letting the tool pick where to upload
> - And combining their storage
> 
> You’re not cheating—you’re just **managing space smarter**.
> 
> * * *
> 
> ### 📦 Real example:
> 
> If you have 100 of these old accounts:
> 
> - 100 × 15 GB = 1500 GB (or 1.5 TB)
> - Upload anything—movies, backups, whatever
> - Tool spreads it across those accounts **automatically**
> 
> * * *
> 
> ### 🧨 How much space can 1 Gmail unlock?
> 
> If you used 1 Gmail to create 12 Google projects (max allowed),  
> and each project had 100 service accounts:
> 
> - That’s 1200 accounts × 15GB = **18 TB total**
> 
> 18 terabytes. From 1 Gmail. Wild, right?
> 
> * * *
> 
> ### 😢 Still confused?
> 
> Just think of it like this:
> 
> > “I got many free fridges. Instead of stuffing one full, I spread the food across all of them. This tool knows which fridge has space and puts the food there for me—so I don’t have to think.”

---

<div class="post-metadata">

**Author:** ![ma\_laika](https://onehack.st/user_avatar/onehack.st/ma_laika/32/157920_2.png) [@ma\_laika](https://onehack.st/u/ma_laika)\
**Post date:** [June 24, 2025, 1:14pm UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/3 "2025-06-24T13:14:14Z")

</div>

Is there a template we can copy/create a "`.json` service account file? I’m just a newbie.

---

<div class="post-metadata">

**Author:** ![Virus\_exe](https://onehack.st/user_avatar/onehack.st/virus_exe/32/38851_2.png) [@Virus\_exe](https://onehack.st/u/Virus_exe)\
**Post date:** [June 24, 2025, 6:16pm UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/4 "2025-06-24T18:16:08Z")

</div>

**Here is the Missing Part, I hope It will help:-**

## 🔧 How to Create a Google Service Account and Generate a JSON Key

Follow these steps to create a Google Service Account and download its JSON credentials:

* * *

### **Step 1: Create a Google Cloud Project**

1. Go to [Google Cloud Console](https://console.cloud.google.com/).
2. Click the project dropdown at the top.
3. Click **“New Project”**.
4. Enter a **project name** and click **“Create”**.
5. After it’s created, switch to that project.

* * *

### **Step 2: Enable the Google Drive API (or your target API)**

1. In the left menu, go to **“APIs & Services” \> “Library”**.
2. Search for **“Google Drive API”**.
3. Click on it, then click **“Enable”**.

* * *

### **Step 3: Create a Service Account**

1. In the left menu, go to **“IAM & Admin” \> “Service Accounts”**.

2. Click **“Create Service Account”**.

3. Enter a **name and description** for your service account.

4. Click **“Create and Continue”**.

5. Assign a role such as:

6. Click **“Done”**.

* * *

### **Step 4: Generate the JSON Key File**

1. In the list of service accounts, click the one you just created.
2. Go to the **“Keys”** tab.
3. Click **“Add Key” \> “Create new key”**.
4. Choose **“JSON”** as the key type.
5. Click **“Create”**.

Your JSON file will automatically download. This file contains the credentials used to authenticate your application.

* * *

### ✅ You’re Done!

You now have a working Service Account and its corresponding JSON credentials file, ready for use in automation or tools like SA Drive.

---

<div class="post-metadata">

**Author:** ![Abc\_Xyz1](https://onehack.st/user_avatar/onehack.st/abc_xyz1/32/119447_2.png) [@Abc\_Xyz1](https://onehack.st/u/Abc_Xyz1)\
**Post date:** [June 26, 2025, 1:10am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/5 "2025-06-26T01:10:58Z")

</div>

## Detailed tutorial

1. Go to this [youtube](https://youtu.be/PlR6nXF7WNI) video to create service accounts. [SA\_CREATION\_UTILITY.zip](https://onehack.st/uploads/short-url/eoniW3t69SvjXwlMa977K6THDQw.zip) (4.3 KB)
2. Now go to [https://groups.google.com](https://groups.google.com) and get your group mail (looks like `something@googlegroups.com` ) and then head to your original google drive and create a new folder. Go to the share option of the folder the add your group mail and give editor access to it.
3. Create a new folder `config_dir` and copy the accounts folder created in `step 1` into that folder and create `config.json` file and enter the folde  
r id created in `step 2` in the `parent_id` part and download glcone and enter its path in `path_to_gclone.exe` (make sure you enter double backslash)

````auto
  "parent_id": "1at0dM_hN2GFVn8ANGOlFwvo5ZcJy38XC",
  "path_to_gclone.exe":"C:\\Users\\HEMAN\\Desktop\\\\gclone-l3v11\\gclone.exe" 
  }```

````

4. [OPTIONAL (but recommended)] Run `pip install virtualenv` Then run `virtualenv venv`, `cd venv/Scripts`, `activate`, `cd ../..`.
5. Run `pip install sadrive`.
6. You might now be able to see all the uploaded folders in the folder whose id you have entered in `step 3`. Consider giving a star to the [repo](https://github.com/jsmaskeen/sa-drive).

### I have myself created a walkthrough for the entire process. Here is the [link](https://youtu.be/RuPikAmXuzo).

---

<div class="post-metadata">

**Author:** ![questunderway](https://onehack.st/user_avatar/onehack.st/questunderway/32/158802_2.png) [@questunderway](https://onehack.st/u/questunderway)\
**Post date:** [June 26, 2025, 4:23am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/6 "2025-06-26T04:23:21Z")

</div>

it says in the github after april 2025 new service accounts don’t have 15gb of google drive storage. so does this method really work now?

---

<div class="post-metadata">

**Author:** ![kuasha](https://onehack.st/user_avatar/onehack.st/kuasha/32/83609_2.png) [@kuasha](https://onehack.st/u/kuasha)\
**Post date:** [June 26, 2025, 4:58am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/7 "2025-06-26T04:58:50Z")

</div>

It’s still confusing. When you are sharing a tutorial on YouTube, there are many different tasks that may not be associated with this. There is a task connecting to the MongoDB server in one tutorial. In another tutorial, there is a Python file to create 100 accounts. So please instruct us which video or process we should follow, as we are total newbies.

---

<div class="post-metadata">

**Author:** ![ma\_laika](https://onehack.st/user_avatar/onehack.st/ma_laika/32/157920_2.png) [@ma\_laika](https://onehack.st/u/ma_laika)\
**Post date:** [June 26, 2025, 7:14am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/8 "2025-06-26T07:14:49Z")

</div>

Can somebody walk this us step by step. We don’t need to run 100 accounts in Python yet. We don’t need to connect to a database we don’t understand. What we need — and fully deserve — is guidance. Clarity. A voice that says, “Start here,” and walks beside us without assuming we’ve walked this road before.

---

<div class="post-metadata">

**Author:** ![Abc\_Xyz1](https://onehack.st/user_avatar/onehack.st/abc_xyz1/32/119447_2.png) [@Abc\_Xyz1](https://onehack.st/u/Abc_Xyz1)\
**Post date:** [June 26, 2025, 3:36pm UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/9 "2025-06-26T15:36:53Z")

</div>

> [@questunderway](#):
>
> after april 2025 new service accounts don’t have 15gb of google drive storage. so does this method really work now?

Yes, it still works!!! You can check the walkthrough; it was recorded today only.

---

<div class="post-metadata">

**Author:** ![kuasha](https://onehack.st/user_avatar/onehack.st/kuasha/32/83609_2.png) [@kuasha](https://onehack.st/u/kuasha)\
**Post date:** [June 27, 2025, 3:52am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/10 "2025-06-27T03:52:25Z")

</div>

Thank you so much for the video tutorial. 😻

---

<div class="post-metadata">

**Author:** ![ma\_laika](https://onehack.st/user_avatar/onehack.st/ma_laika/32/157920_2.png) [@ma\_laika](https://onehack.st/u/ma_laika)\
**Post date:** [June 27, 2025, 5:10am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/11 "2025-06-27T05:10:32Z")

</div>

Thank you very much Abc\_Xyz1. I now have what I want. 🙂

---

<div class="post-metadata">

**Author:** ![CPPTEMBAM](https://onehack.st/user_avatar/onehack.st/cpptembam/32/151341_2.png) [@CPPTEMBAM](https://onehack.st/u/CPPTEMBAM)\
**Post date:** [June 27, 2025, 6:18am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/13 "2025-06-27T06:18:53Z")

</div>

![image](https://onehack.st/uploads/default/original/3X/9/8/988840a2c2b045540e2ccfe3e591bb97e0204b3f.png)

THIS IS VERY UNSAFE BECAUSE I NEED TO CHOOSE PROJECT THAT IS NOT CREATED BY ME? WTH?

---

<div class="post-metadata">

**Author:** ![questunderway](https://onehack.st/user_avatar/onehack.st/questunderway/32/158802_2.png) [@questunderway](https://onehack.st/u/questunderway)\
**Post date:** [June 27, 2025, 9:16am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/15 "2025-06-27T09:16:27Z")

</div>

```auto
Successfully Enabled Services.

Now creating 100 SERVICE ACCOUNTS in [your-project-id]

Downloading service accounts now..
Traceback (most recent call last):
  File "C:\Users\[username]\Downloads\SA_CREATION_UTILITY\sa_creation_utility.py", line 115, in <module>
    downloadsa(sas_cls,proj_id)
    ~~~~~~~~~~ ^^^^^^^^^^^^^^^^^
  File "C:\Users\[username]\Downloads\SA_CREATION_UTILITY\sa_creation_utility.py", line 68, in downloadsa
    sas_cls.download_keys(projectid)
    ~~~~~~~~~~~~~~~~~~~~~ ^^^^^^^^^^^
  File "C:\Users\[username]\Downloads\SA_CREATION_UTILITY\sa_help.py", line 72, in download_keys
    self._create_sa_keys(self.iam,[projectid],'accounts')
    ~~~~~~~~~~~~~~~~~~~~ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[username]\Downloads\SA_CREATION_UTILITY\sa_help.py", line 76, in _create_sa_keys
    all_projs = self._list_projects()
  File "C:\Users\[username]\Downloads\SA_CREATION_UTILITY\sa_help.py", line 40, in _list_projects
    return [i['projectId'] for i in self.cloud.projects().list().execute()['projects']]
                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^^
  File "[...]\venv\Lib\site-packages\googleapiclient\_helpers.py", line 130, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "[...]\venv\Lib\site-packages\googleapiclient\http.py", line 923, in execute
    resp, content = _retry_request(
                    ~~~~~~~~~~~~~~ ^
        http,
        ^^^^^
    ...<7 lines>...
        headers=self.headers,
        ^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "[...]\venv\Lib\site-packages\googleapiclient\http.py", line 222, in _retry_request
    raise exception
  File "[...]\venv\Lib\site-packages\googleapiclient\http.py", line 191, in _retry_request
    resp, content = http.request(uri, method, *args, **kwargs)
                    ~~~~~~~~~~~~ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "[...]\venv\Lib\site-packages\google_auth_httplib2.py", line 218, in request
    response, content = self.http.request(
                        ~~~~~~~~~~~~~~~~~ ^
        uri,
        ^^^^
    ...<5 lines>...
        **kwargs
        ^^^^^^^^
    )
    ^
  File "[...]\venv\Lib\site-packages\httplib2\ __init__.py", line 1724, in request
    (response, content) = self._request(
                          ~~~~~~~~~~~~~ ^
        conn, authority, uri, request_uri, method, body, headers, redirections, cachekey,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "[...]\venv\Lib\site-packages\httplib2\ __init__.py", line 1444, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
                          ~~~~~~~~~~~~~~~~~~ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "[...]\venv\Lib\site-packages\httplib2\ __init__.py", line 1396, in _conn_request
    response = conn.getresponse()
  File "C:\[path-to-python]\Lib\http\client.py", line 1430, in getresponse
    response.begin()
    ~~~~~~~~~~~~~~ ^^
  File "C:\[path-to-python]\Lib\http\client.py", line 331, in begin
    version, status, reason = self._read_status()
                              ~~~~~~~~~~~~~~~~~ ^^
  File "C:\[path-to-python]\Lib\http\client.py", line 292, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
               ~~~~~~~~~~~~~~~~ ^^^^^^^^^^^^^^
  File "C:\[path-to-python]\Lib\socket.py", line 719, in readinto
    return self._sock.recv_into(b)
           ~~~~~~~~~~~~~~~~~~~~ ^^^
  File "C:\[path-to-python]\Lib\ssl.py", line 1304, in recv_into
    return self.read(nbytes, buffer)
           ~~~~~~~~~ ^^^^^^^^^^^^^^^^
  File "C:\[path-to-python]\Lib\ssl.py", line 1138, in read
    return self._sslobj.read(len, buffer)
           ~~~~~~~~~~~~~~~~~ ^^^^^^^^^^^^^
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

```

getting this error, I checked website and it does create 100 accs but fails to download while showing that error ☹

---

<div class="post-metadata">

**Author:** ![Ufkenedy](https://onehack.st/letter_avatar_proxy/v4/letter/u/94ad74/32.png) [@Ufkenedy](https://onehack.st/u/Ufkenedy)\
**Post date:** [June 27, 2025, 11:15am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/16 "2025-06-27T11:15:24Z")

</div>

Had same error but retried and worked 100%

---

<div class="post-metadata">

**Author:** ![Vishwa](https://onehack.st/user_avatar/onehack.st/vishwa/32/158209_2.png) [@Vishwa](https://onehack.st/u/Vishwa)\
**Post date:** [June 27, 2025, 11:39am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/17 "2025-06-27T11:39:03Z")

</div>

Hey do I have to use the terminal everytime to upload anything? Is it possible to upload via android devices?

---

<div class="post-metadata">

**Author:** ![Ufkenedy](https://onehack.st/letter_avatar_proxy/v4/letter/u/94ad74/32.png) [@Ufkenedy](https://onehack.st/u/Ufkenedy)\
**Post date:** [June 27, 2025, 12:01pm UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/18 "2025-06-27T12:01:47Z")

</div>

Op thanks a lot for this. Works for me and was able to successfully upload first file but subsequent files failed to upload. I’ve tried 5 different files now, all failed.

---

<div class="post-metadata">

**Author:** ![Vishwa](https://onehack.st/user_avatar/onehack.st/vishwa/32/158209_2.png) [@Vishwa](https://onehack.st/u/Vishwa)\
**Post date:** [June 27, 2025, 12:20pm UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/19 "2025-06-27T12:20:46Z")

</div>

No dude. It takes time but I uploaded a second file.

---

<div class="post-metadata">

**Author:** ![MADUGA](https://onehack.st/user_avatar/onehack.st/maduga/32/119077_2.png) [@MADUGA](https://onehack.st/u/MADUGA)\
**Post date:** [June 27, 2025, 7:04pm UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/21 "2025-06-27T19:04:09Z")

</div>

[https://www.googleapis.com/upload/drive/v2/files?supportsAllDrives=true&alt=json&uploadType=resumable](https://www.googleapis.com/upload/drive/v2/files?supportsAllDrives=true&alt=json&uploadType=resumable) returned “Service Accounts do not have storage quota. Leverage shared drives ([https://developers.google.com/workspace/drive/api/guides/about-shareddrives](https://developers.google.com/workspace/drive/api/guides/about-shareddrives)), or use OAuth delegation ([http://support.google.com/a/answer/7281227](http://support.google.com/a/answer/7281227)) instead.”. Details: “[{‘message’: ‘Service Accounts do not have storage quota. Leverage shared drives ([https://developers.google.com/workspace/drive/api/guides/about-shareddrives](https://developers.google.com/workspace/drive/api/guides/about-shareddrives)), or use OAuth delegation ([http://support.google.com/a/answer/7281227](http://support.google.com/a/answer/7281227)) instead.’, ‘domain’: ‘usageLimits’, ‘reason’: ‘quotaExceeded’}]”\>  
2025-06-28:02:56:57,354 WARNING [http.py:140] Encountered 403 Forbidden with reason “quotaExceeded”

How do we fixed the exceeded quota error? thanks +1

---

<div class="post-metadata">

**Author:** ![Vercel-2525998845522](https://onehack.st/letter_avatar_proxy/v4/letter/v/a8b319/32.png) [@Vercel-2525998845522](https://onehack.st/u/Vercel-2525998845522)\
**Post date:** [June 28, 2025, 2:27am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/25 "2025-06-28T02:27:49Z")

</div>

Thank you for sharing. When I run the script, it gets stuck at creating the 100th service account. It seems like my main email account with the role of “owner” uses one of the 100 “OAuth user” counts leaving 99 left and thus not letting the script create the 100th service account. Even when I stop the script and try to manually create the 100th service accout, it keeps giving me an error. Can you please help me resolve this?

---

<div class="post-metadata">

**Author:** ![Abc\_Xyz1](https://onehack.st/user_avatar/onehack.st/abc_xyz1/32/119447_2.png) [@Abc\_Xyz1](https://onehack.st/u/Abc_Xyz1)\
**Post date:** [June 28, 2025, 7:13am UTC](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200/26 "2025-06-28T07:13:56Z")

</div>

Starting **April 15, 2025** , new Google Cloud IAM service accounts will no longer receive free Google Workspace storage—so uploads via Drive won’t work for these accounts. However, service accounts created **before June 22, 2025** (which I’ve verified) still retain upload capabilities. New accounts beyond that date won’t have free storage attached.  
So, this trick is useless for all the new users.

[Next page](https://onehack.st/t/unlimited-storage-using-google-cloud-service-accounts/307200.md?page=2)
