---
title: "Azure Storage GUI for Mac, Windows & Linux"
description: "Azure Storage GUI for Mac, Windows and Linux: resumable blob transfers, Data Lake ACLs, SMB and NFS file shares, queue peek and Table entity editing."
url: "https://jamsql.com/databases/azure-storage/"
html_url: "https://jamsql.com/databases/azure-storage/"
generated: "2026-10-02T21:40:16.978Z"
---

# Azure Storage GUI for Mac, Windows & Linux

Jam SQL Studio is a desktop client for Azure Storage accounts and the Azurite emulator. It browses and transfers blobs, manages Data Lake (ADLS Gen2) directories and access control lists, works with SMB and NFS file shares over the REST API without mounting them, peeks, receives and sends queue messages, and opens Table storage in an editable grid. It runs on macOS (Apple Silicon and Intel), Windows x64, and Linux x64 and ARM64 (.deb, .rpm and Arch packages). The Personal tier is free for personal, non-commercial use; work use needs Pro ($9.99 a month or $99 a year, with a 14-day trial and no card).

Switching from Azure Storage Explorer? The [Azure Storage Explorer vs Jam SQL Studio comparison](/alternatives/azure-storage-explorer/) covers what each tool does, including what Jam SQL Studio does not do yet. This page describes the client itself, as of version 1.5.3.

[Download Free](/download/) [Read the Azure Storage Guide](/docs/azure-storage/)

Free for personal use • No account required • Mac, Windows, Linux

## What Jam SQL Studio does for each Azure Storage service

One Azure Storage connection shows up in the Object Explorer next to your SQL connections, with a folder per service: **Blob Containers** (**Data Lake Containers** on an account with a hierarchical namespace), **File Shares**, **Queues** and **Tables**. Azure Storage has no SQL, so these connections have no query editor; each container, share, queue or table opens in its own tab.

Service

What you can do in Jam SQL Studio

Limits worth knowing

[Blob containers](#blob-containers)

Browse virtual folders (hierarchy or flat), preview and edit files in a pane next to the list, upload files and folders, download a blob, a folder or a selection, delete; background transfers with Cancel, Resume and Restart; properties, metadata, HTTP headers, index tags, access tiers, public access, stored access policies and SAS

Snapshots, versions and deleted blobs are not listed; no lease actions; no copy and paste between containers; uploads create block blobs

[Data Lake (ADLS Gen2)](#data-lake)

Real directories with Owner, Group and Permissions columns; rename and move; an ACL editor with an Effective column; recursive ACL changes as a resumable job; directory SAS

Directories are browsed in the Data Lake view, not expanded in the tree; restoring soft-deleted paths is not available

[File shares](#file-shares)

SMB and NFS shares over the Azure Files REST API: upload, download, real folders, delete; snapshots as read-only tabs; quota; share SAS; mount commands as text

Never mounts a share; on NFS shares an upload cannot replace an existing file; share and file SAS tokens can only be created from an account-key connection

[Queues](#queues)

Peek up to 32 messages without consuming them; Receive with a visibility timeout; update or delete received messages; add messages; clear or delete a queue

One connection holds at most 200 received messages at a time

[Tables](#tables)

The Table Explorer grid with typed values, filter chips or raw OData, continuation paging, ETag-checked edits, and export of selected, loaded or all matching entities to CSV, JSON or Excel

At most 15 comparisons per filter (the service limit); sorting applies to the loaded page; no CSV import

Jam SQL Studio 1.5.3. Every row links to its section below; the [Azure Storage guide](/docs/azure-storage/) documents each dialog.

![Jam SQL Studio with the Contoso Demo Storage connection expanded in the Object Explorer into Blob Containers, Queues with approximate message counts, and Tables, and the images container open in the storage browser listing two virtual folders above block blobs with their size, last modified time and access tier](/images/docs/azure-storage-explorer-services.png)
*A storage account in the Object Explorer, with a blob container open in the storage browser.*

## Platforms and licence

The Azure Storage features are the same on every platform. Each build is a desktop app with no separate runtime to install.

### macOS

Separate Apple Silicon and Intel builds, signed and notarized, for macOS 11 Big Sur or later. [Mac download](/download/mac/)

### Windows

Windows 10 and 11, x64. There is no native Windows ARM64 build. [Windows download](/download/windows/)

### Linux

x64 and ARM64 as .deb, .rpm and Arch packages, for distributions with glibc 2.30 or newer. [Linux download](/download/linux/)

The **Personal** tier is free for personal, non-commercial use, needs no account and includes Azure Storage connections. Using Jam SQL Studio in a job, for a client or inside a company needs **Pro**, which costs $9.99 a month or $99 a year. Sign in inside the app, then start the 14-day Pro trial yourself; no card is required. Details are on the [pricing page](/pricing/).

## Azure Blob Storage browser and transfers

Double-click a container to open it in the storage browser. Virtual folders (the `/` segments of blob names) open like directories, the breadcrumb walks back up, and **Hierarchy** / **Flat** switches between folder-by-folder browsing and every blob under the current prefix. The prefix filter (Cmd/Ctrl+F) narrows the listing on the service, not in the grid. Listings load 5,000 items per page, the most Azure's List Blobs operation returns in one call, and the next page loads as you scroll; **Load all** fetches the rest. Azure returns a continuation marker rather than a total, so the status bar shows how many items are loaded instead of a count it cannot know ([List Blobs on Microsoft Learn](https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs), as of September 2026).

### Preview and edit files

-   **Preview** on the toolbar opens a pane next to the list that shows the selected blob, Data Lake file or file-share file and follows the selection as you move with the arrow keys: JSON as a tree, formatted text or the file as stored, Markdown rendered, configuration files and code with syntax highlighting, and images, video and audio.
-   Text up to 5 MB loads whole; a larger text file shows its first 512 KB, with **Load whole file** up to 32 MB. Images preview up to 32 MB, video and audio up to 64 MB; PDF documents offer Download instead of a preview.
-   **Edit** changes a text file in place. **Save** writes it only if its ETag still matches the version you opened, and keeps the blob's headers, metadata, index tags and an explicit access tier (on Data Lake, the file's owner, group and ACL). **Save a copy** writes your text under a new name, in this container or another one. See [Preview and edit files](/docs/azure-storage/#preview).

### Uploads, downloads and the Transfers drawer

-   **Upload** files or whole folders from the toolbar, or drag them from your file manager onto the open container or folder. A blob that already exists pauses the upload for Skip, Keep both or Overwrite, and Skip is the default button, so pressing Enter never overwrites anything.
-   **Download** a blob, a folder or a multi-row selection. One blob uses the normal save dialog; folders and selections use one folder picker. There is no single Download all button yet: select every loaded row with Cmd/Ctrl+A and download that.
-   Uploads, downloads and deletes run as background jobs in the **Transfers** drawer, with item and byte progress, throughput and the attempt count. **Cancel** keeps a partial download on disk, and **Resume** requests only the missing bytes; if the blob changed in the meantime, the download starts over and says so. **Restart** sends the unfinished items again from the first byte and keeps the finished ones. Unfinished jobs come back as interrupted after an app restart.
-   Settings → Azure Storage sets how many jobs and blocks run at once and the upload block size.

### Properties, access tiers and SAS

-   The **Properties** panel (Enter on a blob) shows size, blob type, access tier, ETag, last modified time and lease state. Metadata, HTTP headers and index tags have separate editors, and each section saves with a check for changes another client made since the panel loaded it, so such a change is not silently overwritten (for index tags, a tag key another client adds in the moment before the save is not detected).
-   **Change tier…** moves a blob between Hot, Cool, Cold and Archive and asks for Standard or High rehydrate priority when a blob leaves Archive.
-   On a container, **Set public access level…** switches between Private, Blob and Container with a confirmation that names the exposure, and **Manage access policies…** edits up to five stored access policies.
-   **Get SAS…** creates account and service SAS tokens from an account-key connection, and user-delegation SAS tokens for containers and blobs from a Microsoft Entra ID connection. A user-delegation SAS can be valid for at most seven days, which is Azure's limit ([Create a user delegation SAS](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas), as of September 2026). The token stays masked until you choose Reveal, and **Add as a Jam connection…** opens a new connection with it without putting it on the clipboard.
-   Delete confirmations list what will be deleted and report blob soft delete as on (with its retention days), off or unknown; deleting a container requires typing its name.

Details: [browsing](/docs/azure-storage/#browse), [downloads and transfers](/docs/azure-storage/#download), [upload and delete](/docs/azure-storage/#upload-delete), [properties, tiers and SAS](/docs/azure-storage/#properties).

![The Transfers drawer below a blob container: under Active, a running folder upload with its destination, bytes, items, throughput and a Cancel button; under Finished, with Clear finished and Discard unfinished buttons, a completed download offering Show in folder and a cancelled download offering Resume and Restart](/images/docs/azure-storage-transfers-drawer.png)
*Running jobs above, finished ones below; the cancelled download keeps its partial file and can resume.*

## Data Lake Storage Gen2: directories and ACL editor

When an account has a hierarchical namespace, Jam SQL Studio detects it on connect, the folder reads **Data Lake Containers**, and a container opens in the **Data Lake view**: real directories and files with **Owner**, **Group** and **Permissions** columns, where a trailing `+` marks an extended ACL. **Open in Blob view** opens the same location as blobs. Upload, download, delete, properties, tiers and SAS work in both views.

-   **Rename…** (F2) and **Move…** use Azure's own rename, so a directory moves with everything under it, also to another file system of the same account. A move never overwrites: it is refused when something already exists at the destination or the source changed after Jam SQL Studio read it.
-   **Manage access…** edits the owner, owning group, access entries and, for directories, default entries of one file or directory. Azure applies the mask to named users, named groups and the owning group ([ACLs in Azure Data Lake Storage](https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-access-control), as of September 2026), so the editor's **Effective** column shows what each entry grants once the mask applies. The mask stays as loaded while you edit entries, and before saving the editor lists every change in effective permissions and marks the ones that widen access.
-   Default entries only apply to items created later; Microsoft's ACL article notes that changing a parent's default ACL does not affect children that already exist. For those, **Propagate access…** applies a merge, replace or remove to a directory and everything under it as a job in the Transfers drawer, in batches of up to 2,000 paths. Replace and Remove ask you to type the directory name, refused paths are listed (up to 100) with Retry, a cancelled or interrupted job resumes from the last recorded batch, and there is no undo.
-   **Get SAS…** on a directory creates a directory SAS that covers only that directory, and the row menu copies an `abfss://` URI or a DFS URL.
-   Changing ACLs needs the Storage Blob Data Owner role or being the owning user of the path. A connection that signs with the account key is a super-user, since ACLs do not apply to Shared Key requests (same Microsoft article), and the editor says so.

Details: [directories, rename and move](/docs/azure-storage/#data-lake-directories), [access control](/docs/azure-storage/#data-lake-access-control), [propagating access](/docs/azure-storage/#data-lake-propagate).

![A Data Lake container open in the Data Lake view, listing a README.md file and the curated, landing, published, raw and restricted directories with Owner and Group columns showing $superuser and a Permissions column, where restricted shows rwxr-x---+ for an extended ACL](/images/docs/azure-storage-data-lake.png)
*The Data Lake view lists real directories with their owner, group and permissions.*

## Azure file share browser for SMB and NFS shares

The **File Shares** folder lists an account's Azure Files shares, SMB and NFS alike, with a quota badge and an `NFS` badge on NFS shares. Everything goes through the Azure Files REST API: nothing is mounted on your machine and no SMB or NFS client is needed. A share opens in the same storage browser as a blob container.

-   **New folder** creates a real directory in the share. **Upload** writes each file under a hidden temporary name and then gives it its final name without replacing a file that appeared there in the meantime, so a cancelled upload can resume. Downloads keep each file's last-write time as its local modification time.
-   **Snapshots…** lists, creates, opens and deletes share snapshots; a snapshot opens as its own read-only tab you can browse and download from. A delete confirmation states how many snapshots the share has, and says the delete cannot be undone when there is none.
-   **Quota…** checks the limits of the account's billing model (pay-as-you-go, provisioned v1 or v2). Azure has no condition for a quota change, so right before writing Jam SQL Studio reads the quota again and writes nothing if it differs from the one the dialog read; a change another client makes between that read and the write is not detected. **Create share…** takes a name, an optional quota and SMB or NFS.
-   NFS shares use NFS 4.1 and are available only on SSD file shares ([NFS file shares in Azure Files](https://learn.microsoft.com/en-us/azure/storage/files/files-nfs-protocol), as of September 2026). In Jam SQL Studio an upload to an NFS share cannot replace an existing file, so a name collision offers only Skip or Keep both, and NFS listings carry no modification times.
-   **Copy mount command…** shows commands you run yourself: Windows (PowerShell), macOS and Linux for an SMB share, Linux for an NFS share. The account key appears only as a `<storage-account-key>` placeholder.
-   With Microsoft Entra ID, reading and writing files needs Storage File Data Privileged Reader or Contributor, and listing shares needs a role that can read the account, such as Reader. An identity that cannot list shares can still open shares you name with **Open share by name…**.

Details: [file shares](/docs/azure-storage/#file-shares), [snapshots](/docs/azure-storage/#share-snapshots), [NFS shares](/docs/azure-storage/#nfs-shares), [mount commands](/docs/azure-storage/#mount-command).

![A premium storage account's File Shares folder with an SMB share and an NFS share, each with a 32 GiB quota badge and the NFS share marked NFS, and a folder of the SMB share open in the storage browser with Upload, New folder, Download folder, Properties, Snapshots and Get SAS in the toolbar](/images/docs/azure-storage-file-shares.png)
*A file share opens in the same browser as a blob container; the tree shows each share's quota and marks NFS shares.*

## Azure queue viewer: peek, receive and send messages

The **Queues** folder shows each queue with Azure's approximate message count. Opening a queue peeks the first visible messages, up to 32, which is the most a single Peek Messages call returns. Peeking changes neither a message's visibility nor its dequeue count ([Peek Messages on Microsoft Learn](https://learn.microsoft.com/en-us/rest/api/storageservices/peek-messages), as of September 2026), so you can look at a production queue without taking work away from its consumers.

-   **Decode Base64** shows encoded message bodies as text; it changes the display and export only, never the message.
-   **Receive…** is a separate, explicit action. It takes the next 1 to 32 messages from the front of the queue and hides them for the visibility timeout you set. While a received message's receipt is current, you can update its text and visibility or delete it. One connection holds at most 200 received messages at a time.
-   **Add message…** sends a message. Clearing or deleting a queue requires typing its name, and the clear confirmation shows the approximate count when Azure reports one.
-   Messages sit in the Table Explorer grid, so keyboard selection, copy and export work as they do for tables. A read-only connection can list and peek, and nothing else.

Details: [queues](/docs/azure-storage/#queues).

![The orders queue open in a tab with Peek, the peek count set to 32, Add message, Receive, Decode Base64 ticked and the More menu that holds Clear queue, listing six peeked messages with their JSON text first, then the dequeue count, the inserted and expiry times in local time, and the message ID column at the right edge](/images/docs/azure-storage-queue-peek.png)
*Peeked messages with Decode Base64 on; the dequeue count shows how many times each message has been received.*

## Azure Table storage viewer and editor

A table opens in the [Table Explorer](/docs/table-explorer/) grid that Jam SQL Studio uses for SQL tables. Account-level connections can also create a table, and deleting one requires typing its exact name.

-   **Typed values.** Every property keeps its EDM type: Int64 values stay exact, an integer-valued Double stays a Double, date-times keep all seven fractional digits (cells show your local time; the tooltip, copy and export keep the exact value), and binary and GUID values are not flattened. A property an entity does not have shows as `∅`, which is different from an empty string.
-   **Filter chips or raw OData.** Both go through the same validator, which enforces the Table service's limit of 15 comparisons per `$filter` before anything is sent ([Querying tables and entities](https://learn.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities), as of September 2026). **Convert to chips** keeps the type of every literal, so `Count eq 5` and `Count eq 5.0` stay different filters.
-   **Paging and columns.** Choose 100, 250, 500 or 1,000 entities per request; Next follows Azure's continuation handle, and the footer counts the rows on the current page instead of inventing a total. Picking columns sends a `$select`. Sorting applies only to the page already loaded.
-   **Edits that check the ETag.** In **Edit Mode** you add entities and typed properties, change values, remove properties and delete entities, then save the drafts together. The Table service applies an update only while the entity still has the ETag it was read with ([Update Entity](https://learn.microsoft.com/en-us/rest/api/storageservices/update-entity2)), so when someone else changed the entity first, Jam SQL Studio shows the server's value, your value and the original side by side with **Reload**, **Overwrite anyway** and **Keep draft**. An entity over the service limits of 252 custom properties, 64 KiB per string or binary value or 1 MiB in total ([Table service data model](https://learn.microsoft.com/en-us/rest/api/storageservices/understanding-the-table-service-data-model), as of September 2026) stays a draft with the reason while the others save.
-   **Export.** One menu exports the selected rows, the loaded rows or all matching rows to Excel, CSV or JSON. A property an entity lacks is left out of its JSON object rather than written as null. All matching rows runs as a background transfer you can cancel.
-   **Declarations.** Properties can carry the same [enum](/docs/enum-columns/), JSON and [loose relationship](/docs/loose-foreign-keys/) declarations as SQL columns, so a `CustomerId` property can show the referenced customer's name and open that entity.

Details: [Table entities](/docs/azure-storage/#tables).

![An Azure table named Orders in the Table Explorer grid, filtered by a PartitionKey equals EU chip and a Total greater than 100 chip, with PartitionKey, RowKey and Timestamp columns (Timestamp in local time) followed by typed Customer, Total, Paid, TrackingId and Items columns, a missing TrackingId shown as an empty-set glyph, and a footer reading 6 rows on this page with a page-size picker](/images/docs/azure-storage-entities.png)
*Table entities with their EDM types, filtered by two chips.*

## Ways to connect to Azure Storage

Open **New connection**, pick **Azure Storage**, and choose under **Connect using** whether the connection points at a **Storage account**, the **Emulator (Azurite)** or a **Single resource**. Then pick how it signs in:

Method

What you enter

Notes

Account key or connection string

The account name or an endpoint URL with its key, or a full connection string

Full access to the account

Shared access signature

A SAS token or a SAS URL; with **Single resource**, a container, folder, blob, table, queue, share, share folder or share file URL

Account, service or stored-policy SAS. A single-resource connection is scoped to that resource and never lists its siblings

Microsoft Entra ID

An interactive browser sign-in (MFA supported), a service principal (tenant ID, client ID and secret), or Azure CLI, which reuses a prior `az login`

Reading data needs a data role such as Storage Blob Data Reader; Reader alone only lists. An identity that may read the account keys can use the key for data access instead

Anonymous

The public URL of a container or blob

Single-resource mode only

Azurite

**Emulator (Azurite)** fills in `devstoreaccount1`, its well-known key and ports 10000–10002, and shows a `docker run` command you can copy; pasting `UseDevelopmentStorage=true` does the same

[Detect Local Databases](/docs/connections/#detect-local-docker-databases) finds a running Azurite container with its published ports, and uses the first account in `AZURITE_ACCOUNTS` when the container sets it

Browse Azure

Nothing: pick a storage account from your signed-in Azure subscriptions

Endpoints, services and the portal link are filled in. See [Browse Azure](/docs/browse-azure/)

**Test connection** probes each service you ticked on its own and, for Microsoft Entra ID and account SAS credentials, follows each listing with one data read, such as a blob page, an entity or a peeked message, because a listing alone does not prove the data is readable. Each row says what it read, or which role or SAS permission is missing, so a credential that can read blobs but not queues still connects and tells you why the queues failed. [Which role is missing for each Azure Storage authorization error](/blog/2026-09-30-azure-storage-permission-errors/) walks through the errors one by one, and the guide's [role table](/docs/azure-storage/#entra-roles) lists the role each operation needs.

Azurite emulates only the Blob, Queue and Table services, not Azure Files or Data Lake Storage Gen2 ([Use the Azurite emulator](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite), as of September 2026), so the connection form marks File shares as unavailable on an emulator connection. [Run Azurite in Docker and browse it with a GUI](/blog/2026-09-30-azurite-docker-gui/) covers the local setup end to end.

Details: [adding a connection](/docs/azure-storage/#connect), [Test connection](/docs/azure-storage/#test-connection), [Azurite](/docs/azure-storage/#emulator).

![The New Connection dialog on the Azure Storage form with Connect using set to Storage account, Emulator (Azurite) or Single resource, the Storage account field with its Browse Azure button, Account key authentication with the key masked, and Blob, Table, Queue and File shares service checkboxes](/images/docs/azure-storage-connection-form.png)
*Three connect modes, the Azure sign-in methods, and a tick per service to verify.*

## Azure Storage tools for AI agents (MCP)

Jam SQL Studio's local MCP server gives agents such as Claude Code, Codex and Cursor twenty-five `storage_*` tools on the connections you allow: listing and reading blobs, downloads and transfer status, uploads and deletes, queues, SAS generation, Table entities, file shares and Data Lake ACLs. Each connection's permission level decides what an agent may do: **Block** refuses every storage tool, **Read-only** refuses writes, and **Confirm** opens an approval dialog for every write that lists every target it touches. A download always asks you for the destination, a generated SAS token stays in the app, and Table updates and deletes need the entity's ETag. The [storage tools reference](/docs/ai-integrations-mcp/#storage-tools) lists each tool.

## Not supported yet (as of 1.5.3)

These are real gaps in Jam SQL Studio 1.5.3. If one of them is part of your routine, keep another tool for it; any other client can open the same account at the same time.

-   **Blob snapshots, versions and soft-deleted blobs** are not listed, so there is no restore or undelete in the app. Deleting a blob deletes its snapshots, and an AI agent can read, download or delete a snapshot or version whose ID it already has.
-   **Blob leases:** the lease state is shown in Properties, but you cannot acquire or break a lease.
-   **Copy and paste** of blobs or containers, within an account or between accounts. Download and upload again instead.
-   **Append and page blob upload:** uploads create block blobs.
-   **Table entity import from CSV.** Export to CSV, JSON and Excel works.
-   **Managed disks.**
-   **National clouds and Azure Stack:** there is no Azure environment picker, and reading the account key through Azure Resource Manager works on public Azure only.
-   **Proxy settings and certificate import:** the app has no proxy or certificate settings yet.

The guide's [limitations list](/docs/azure-storage/#limitations) covers the smaller ones as well.

## Frequently Asked Questions

Common questions about using Jam SQL Studio as an Azure Storage client.

Is there an Azure Blob Storage GUI for Mac and Linux?

Yes. Jam SQL Studio is a desktop app for macOS (Apple Silicon and Intel), Windows x64, and Linux x64 and ARM64 that browses blob containers and virtual folders, uploads and downloads files and folders, and edits blob properties, access tiers and SAS. Transfers run as background jobs you can cancel, resume and restart. The same connection also covers Data Lake directories, file shares, queues and tables.

Can I view and edit Azure Table storage entities?

Yes. A table opens in the Table Explorer grid with each property's EDM type kept, so Int64 values stay exact and a missing property is shown differently from an empty string. You filter with chips or raw OData (at most 15 comparisons, the Table service limit), add, change or delete entities in Edit Mode, and save the drafts together. Each update is conditional on the entity's ETag, so a change someone else made first opens a comparison instead of being overwritten.

Can I look at Azure queue messages without removing them?

Yes. Opening a queue peeks up to 32 messages, which changes neither their visibility nor their dequeue count. Receive is a separate action: it hides the next messages for the visibility timeout you set, and while the receipt is valid you can update or delete them.

Can I browse an Azure file share without mounting it?

Yes. Jam SQL Studio lists, uploads, downloads and deletes files in SMB and NFS shares through the Azure Files REST API, so nothing is mounted and no SMB or NFS client is needed. Copy mount command shows the commands to mount a share yourself, with the account key as a placeholder.

Can Jam SQL Studio manage ADLS Gen2 ACLs?

Yes. Manage access edits the owner, owning group, access entries and default entries of one file or directory, with an Effective column that applies the mask, and lists every change that widens access before you save. Propagate access applies a merge, replace or remove to a directory and everything under it as a job in the Transfers drawer, in batches of up to 2,000 paths, with per-path Retry and Resume.

Is Jam SQL Studio free for Azure Storage?

For personal, non-commercial use, yes: the Personal tier includes Azure Storage connections and needs no account. Using it for work needs Pro, which costs $9.99 a month or $99 a year and has a 14-day trial with no card required.

## Download Jam SQL Studio

Browse your storage accounts next to your SQL databases on Mac, Windows or Linux.

[

Download for **macOS**

](https://jamsql.com/download/mac/)[

Download for **Windows**

](https://jamsql.com/download/windows/)[

Download for **Linux**

](https://jamsql.com/download/linux/)

Free for Personal Use No Account Required

## More on Azure Storage

Guides for the setups and errors around an Azure Storage connection.

[Azure Storage Guide](/docs/azure-storage/) [Permission Errors and Roles](/blog/2026-09-30-azure-storage-permission-errors/) [Azurite in Docker](/blog/2026-09-30-azurite-docker-gui/) [Azure Storage in 1.5.3 (Blog)](/blog/2026-09-25-azure-storage-blobs-queues-tables/)

### Explore Other Databases

The same app connects to SQL databases and Azure Data Explorer.

[SQL Server](../sql-server/) [PostgreSQL](../postgresql/) [MySQL](../mysql/) [Oracle](../oracle/) [SQLite](../sqlite/) [Azure Data Explorer](../azure-data-explorer/)