🆕 What's New
- Filter presets — save the whole filter configuration under a name and re-apply it anytime from the bar above the Generate button; presets are per page and stay in your browser.
-
Results Excel — download the results grid as a styled
.xlsx(formatted header, autofilter, numeric columns) alongside the existing CSV. - Nearest Miss column — no-match rows now name the closest qualifying instance and the filter(s) that excluded it, so you know exactly what to relax.
- Scenario comparison — pin two generation runs and diff them: match-rate change, newly matched/unmatched VMs, and old → new values for every changed recommendation.
- Install & offline — the tool is an installable app that keeps working offline after your first visit; updates apply automatically the next time you're online.
🕘 Earlier Updates
-
App Portfolio & executive Excel — add an
App Namecolumn and group your estate by application: a per-app dashboard (Open App Portfolio after generating) and a styled multi-sheet.xlsxexport. -
Excel upload —
.xlsxworkbooks are accepted alongside CSV; the first sheet is used. -
Column auto-mapping — headers like
vCPUs,RAM, orHostnamemap automatically to the expected columns; ambiguous cases open a mapping panel, and confirmed mappings are remembered for repeat uploads. -
Region Check panel — after upload, chips show each
region as recognized (green), auto-resolved (amber, e.g.
us-east-1a → us-east-1), or unknown (red — those rows would use built-in sample data). - Faster loading — instance data loads per region on demand; pages open with a few KB of data instead of ~25 MB.
- Real progress, no freezing — generation runs in a background worker with a row-accurate progress bar and automatic fallback.
- Preview search — filter the results preview live across all visible columns.
- No-Match export — download only the rows that got no recommendation, with reasons, to fix and re-upload.
- Dark mode — 🌓 toggle on every page; follows your OS setting until you choose manually.
- Keyboard & screen-reader support — collapsible sections, table sorting, and status updates are fully accessible.
📖 1. Introduction
Welcome to the Cloud Instance Recommender, a comprehensive browser-based tool designed to help organisations optimise their cloud infrastructure across AWS, Azure, and Google Cloud Platform. All processing happens entirely in your browser — no data is ever uploaded to an external server.
The Rule Engine UI builds on the underlying rule engine with five capabilities: interactive Rule Engine UI dropdowns that set global defaults without CSV changes, a Minimum Generation filter to exclude EOL instance families (e.g., AWS m5/r5), conflict detection that highlights contradicting filter combinations in red, a split AWS Pricing Calculator Bulk Template that generates separate files for Like-to-Like and Optimized recommendations, and a Min Gen CSV column for per-row generation control.
| Benefit | Description |
|---|---|
| 📉 Right-sizing | Identify over-provisioned VMs and recommend appropriately-sized replacements |
| ⚙ Smart Scaling | N/2, N, N+1 strategy with industry-standard 40 % / 80 % thresholds |
| 🛡 Rule-based guardrails | Production environments automatically block burstable, prev-gen, and undersized instances |
| 🖥 OS Compatibility | Windows workloads automatically exclude ARM/Graviton instances that cannot run them |
| ☁ Multi-Cloud | Side-by-side recommendations across AWS, Azure, and GCP in one run |
| 📊 Audit trail | "Rules Applied" output column explains every recommendation decision |
| 🔒 Privacy-first | 100 % client-side — your inventory data never leaves your browser |
🌐 Supported Cloud Providers
| Provider | Regions | Instance Families | Notable Support |
|---|---|---|---|
| AWS EC2 | 35 regions | t, m, c, r, x, z, p, g, i, d, trn, inf, mac, hpc… | Graviton (ARM), Nitro Enclaves, Bulk Template export |
| Azure VMs | 63 regions | B, D, E, F, H, L, M, N, NC, ND, NV… | ARM (Dpdsv5, Bpsv2), Burstable B-series detection |
| GCP Compute | 47 regions | E2, N2, N4, C2, C3, C4, M1–M4, A2, A3, G2, T2A, H3, Z3… | T2A ARM, shared-core detection, zone normalisation |
🚀 2. Getting Started
📋 System Requirements
| Requirement | Specification |
|---|---|
| Browser | Chrome 80+, Firefox 75+, Edge 80+, Safari 13+ |
| JavaScript | Must be enabled |
| CSV file size | Up to 10 MB (≈ 5,000–10,000 VMs) |
| Internet | Required for the first visit; after that an offline cache keeps pages and previously used region data working without connectivity |
| Local storage | Used for preferences only (usage statistics, theme, saved column mappings, filter presets); no inventory data stored |
🌐 Accessing the Platform
The tool is hosted on GitHub Pages and requires no installation:
- Open your browser and navigate to the Cloud Instance Recommender URL.
- From the homepage, select your target: AWS, Azure, GCP, or Multi-Cloud.
- Each provider page loads independently with provider-specific filtering options.
Installing as an app (optional)
The tool is a Progressive Web App. Use your browser's Install action (the install icon in the address bar, or Add to Home Screen on mobile) to run it as a standalone app. Installed or not, the site keeps working offline after the first visit — pages and any region data you've already used are served from a local cache, and updates are picked up automatically on your next online visit.
📊 3. Data Preparation
📋 Required Columns
Every CSV row must contain the following columns. Column names are auto-detected (case-insensitive, spaces/underscores normalised).
| Column Name | Description | Example |
|---|---|---|
| VM Name | Unique identifier for the virtual machine | web-server-01 |
| CPU Count | Number of vCPUs currently allocated | 4 |
| Memory (GB) | RAM in gigabytes currently allocated | 16 |
| AWS Region / Azure Region / GCP Region | Target cloud region for recommendation (provider-specific column) | us-east-1 / East US / us-central1-a |
| CPU Utilization | Average CPU utilisation % — required for Optimized recommendations | 45 |
| Memory Utilization | Average memory utilisation % — required for Optimized recommendations | 60 |
⚙ Optional Columns
These five columns activate the Rule Engine. All are optional — blank cells use the safe defaults shown below. They can also be set globally via the Rule Engine UI dropdowns in the Advanced Filtering section (CSV per-row values always override the UI defaults).
| Column | Accepted Values | Default | What it activates |
|---|---|---|---|
| ENV |
Production, Prod,
Staging, Stage, Dev,
Test
|
No rules | Rules 1a, 1b, 1c, 1d — see Section 4 |
| OS |
Linux, Windows,
Windows Server, macOS
|
Linux | ARM/Graviton exclusion for Windows; mac1/mac2-only for macOS (AWS) |
| Workload |
General, Database,
Web Server, Cache, ML/AI,
Batch, HPC
|
General | Preferred instance families sorted first before cheapest selection |
| Compliance | PCI, HIPAA, FIPS |
None | Forces current-gen + Nitro Enclaves (AWS PCI/HIPAA) |
| Min Gen |
AWS 5,
6, 7Azure 3,
4, 5 (v-number)GCP n2,
n2d, n4
|
No minimum | Excludes instances older than the specified generation (e.g., AWS m5 is excluded when Min Gen = 6) |
📄 Sample CSV Structure
VM Name,App Name,CPU Count,Memory (GB),CPU Utilization,Memory Utilization,AWS Region,ENV,OS,Workload,Compliance,Min Gen web-server-01,Storefront,4,16,45,60,us-east-1,Production,Linux,Web Server,,6 db-server-02,Billing,8,32,70,80,us-west-2,Production,Windows,Database,PCI,7 app-server-03,Billing,2,8,35,45,eu-west-1,Dev,Linux,General,, cache-server-04,Storefront,4,16,25,30,us-east-1,Staging,Linux,Cache,,6 ml-server-05,Analytics,8,64,80,75,us-west-2,Production,Linux,ML/AI,HIPAA,7
💡 Data Collection Tips
| Provider | Where to get utilisation data |
|---|---|
| AWS | CloudWatch → EC2 → CPUUtilization metric (14–90 day average recommended). Cost Explorer for current instance types. |
| Azure | Azure Monitor → Virtual Machines → Percentage CPU & Available Memory. Azure Advisor for existing recommendations. |
| GCP | Cloud Monitoring → compute.googleapis.com/instance/cpu/utilization. Recommender API for existing rightsizing signals. |
Collection best practices:
- Use a 30–90 day average — short windows miss weekly/monthly patterns
- Include at least one peak business period (quarter end, product launch, etc.)
- Use P95 or P99 if your workload has spiky traffic, not just averages
- Validate CPU count and memory against the actual current instance type, not OS-reported values
🛡 4. Environment & Workload Rules
The Rule Engine applies automatically when optional CSV columns are present. Rules narrow the candidate instance list before the cheapest-match selection runs — so every recommendation already satisfies your environment constraints.
Effect: Removes CPU-credit-based families
AWS t1, t2, t3, t3a, t4g
Azure B-series (bsv2, bsv3, bpsv2…)
GCP f1-micro, g1-small, e2 shared-core
Effect: Current-generation instances only
Additionally for AWS PCI/HIPAA:
Nitro Enclaves support required
Rationale: Prev-gen lacks modern security features
Effect: Excludes undersized instances
AWS Excludes nano and micro sizes
Azure ≥ 2 vCPUs (Production)
GCP ≥ 2 vCPUs (Production)
Rationale: Headroom for monitoring agents and traffic spikes
Effect: Prefers instances with ≥ 4 vCPUs
Rationale: Larger instance sizes map to higher network bandwidth tiers, critical for database replication and high-throughput web traffic
Excludes all ARM/Graviton instances (t4g, m6g, c6g, r6g on AWS; Dpdsv5, Bpsv2 on Azure; T2A on GCP)
OS = macOS AWS only:
Limits to mac1 and mac2 families
🔢 Min Generation Rule (MG)
The Min Generation rule excludes instances older than a specified hardware generation. This is useful when older generations are approaching end-of-life (e.g., AWS m5/r5 EOL) or when you have a policy requiring modern silicon.
| Provider | Column / UI value | Excluded when set to... | Included families |
|---|---|---|---|
| AWS | 5, 6, 7 |
Min Gen = 6 → excludes m5, r5, c5, t3, and all earlier gens | m6i, m6a, m7i, m7g, r6i, r7a, c6i, c7g… |
| Azure | 3, 4, 5 (v-number) |
Min Gen = 4 → excludes Dsv3, Esv3 and older | Dsv4, Dsv5, Esv4, Esv5, Fsv2… |
| GCP |
n2, n2d, n4 (family name)
|
Min Gen = n2 → excludes N1, E2 shared-core, F1, G1 | N2, N2D, C2, C2D, T2A, A2, G2, C3, N4, C4… |
🎯 Workload Family Mappings
| Workload | AWS Preferred Families | Azure Preferred Series | GCP Preferred Series |
|---|---|---|---|
| General | m (General Purpose) | D-series | N2, E2 |
| Database | r, x, z (Memory-optimised) | E-series, M-series | M1, M2, M3, M4 |
| Web Server | m, c (General + Compute) | D-series, F-series | N2, E2, N4 |
| Cache | r, x (Memory-optimised) | E-series, M-series | M1, M2, M3 |
| ML/AI | p, g, trn, inf (GPU/Accelerated) | NC, ND, NV series | A2, A3, G2 |
| Batch | c, m (Compute-optimised) | F-series, D-series | C2, C2D, C3, C3D |
| HPC | hpc, c | HB, HC series | H3, C2 |
📋 Rules Reference Summary
| Rule | Trigger | Action | Output tag |
|---|---|---|---|
| 1a | ENV = Production or Staging | Remove burstable families | 1a: Burstable excluded |
| 1b | ENV = Production or Compliance set | Current-gen only | 1b: Prev-gen excluded |
| 1b-Nitro | Compliance = PCI/HIPAA + AWS | Nitro Enclaves required | 1b: Nitro required (Compliance) |
| 1c | ENV = Production or Staging | Size floor (no nano/micro) | 1c: Size floor applied |
| 1d | ENV = Production + DB/Web Workload | ≥ 4 vCPUs preferred | 1d: Network-tier preference (≥4 vCPUs) |
| OS-Win | OS = Windows | Exclude ARM/Graviton | OS: ARM excluded (Windows) |
| OS-Mac | OS = macOS (AWS only) | mac1/mac2 families only | OS: mac1/mac2 only (macOS) |
| Workload | Workload ≠ General | Preferred families sorted first | Workload: database preference |
| MG | Min Gen set (CSV or UI) | Exclude instances below specified generation | MinGen: 6+ |
📋 5. Step-by-Step Usage Guide
Step 1 — Choose Your Cloud Provider
- Single provider: Navigate directly to the AWS, Azure, or GCP page for focused recommendations with provider-specific filtering options.
- Multi-cloud: Use the Multi-Cloud page to compare recommendations across all three providers in a single run from one CSV upload.
Step 2 — Download and Prepare the Template
- Click Download Sample CSV on the provider page to get a template with the correct column headers.
- Replace the sample rows with your actual VM inventory. Include the optional ENV, OS, Workload, and Compliance columns where applicable.
- Save the file as UTF-8 CSV.
Step 3 — Upload Your CSV
- Drag and drop your CSV onto the upload zone, or click it to browse.
- The tool automatically validates the file, checks required columns, shows a data preview, and assigns a quality score (0–100 %).
- Review any warnings before proceeding — common issues include missing region columns or non-numeric CPU/memory values.
| Quality Score | Level | Meaning |
|---|---|---|
| 90–100 % | ✅ Excellent | Complete data, minimal issues |
| 70–89 % | 🟡 Good | Some missing optional values |
| 50–69 % | 🟠 Fair | Multiple data quality issues |
| < 50 % | 🔴 Poor | Significant missing or invalid data |
Step 4 — Select Recommendation Type
| Type | What it does | When to use | Data needed |
|---|---|---|---|
| Like-to-Like | Finds cheapest instance with ≥ current CPU and ≥ current memory | Conservative migrations; guaranteed headroom | CPU Count, Memory (GB), Region |
| Optimized | Applies N/2, N, N+1 strategy to right-size based on actual utilisation | Cost reduction; over-provisioned estate | Above + CPU Utilization, Memory Utilization |
| Both | Generates both columns per VM for comparison | Decision-making; stakeholder reporting | All columns |
Step 5 — Configure Optimization Settings
(Only relevant for Optimized or Both recommendation types)
Optimization Mode
- CPU-Based: Scale CPU according to utilisation thresholds
- Memory-Based: Scale memory according to utilisation thresholds
- Both can be enabled simultaneously
N/2, N, N+1 Thresholds (Industry-Standard Defaults)
| Zone | CPU / Memory Utilisation | Action | Rationale |
|---|---|---|---|
| Downsize (N÷2) | ≤ 40 % | Halve the target resource | Avg below 40 % = significantly over-provisioned; AWS, Azure, and GCP advisors all flag this range |
| Keep Same (N) | 40 % – 80 % | Use current resource count | Right-sized zone with adequate headroom for spikes |
| Upsize (N+1) | > 80 % | Add one unit of the resource | SRE best practice: keep utilisation below 80 % to avoid saturation incidents |
Step 6 — Configure Rule Engine & Advanced Filtering (Optional)
Expand the Advanced Filtering section to access both the Rule Engine UI controls and provider-specific filters.
Rule Engine Defaults
Five dropdowns let you set rule defaults for the entire batch without modifying your CSV. Per-row CSV column values always take priority over these UI defaults.
| Dropdown | Options | Effect |
|---|---|---|
| Default Environment | — / Production / Staging / Dev / Test | Applies ENV rules to every row that has no ENV column value |
| Default OS | — / Linux / Windows / macOS | Applies OS compatibility rules globally |
| Default Workload | — / General / Database / Web Server / Cache / ML/AI / Batch / HPC | Sets family preference order for all rows |
| Default Compliance | — / PCI / HIPAA / FIPS / SOC2 | Enforces compliance-grade filtering globally |
| Minimum Generation | AWS: Gen 5+ / 6+ / 7+ · Azure: v3+ / v4+ / v5+ · GCP: N2 / N2D / N4 | Excludes instance families below the selected generation |
Conflict Detection
When two selected options directly contradict each other, the conflicting dropdowns are highlighted in red with an explanatory warning. For example:
- OS = Windows + processor filter restricted to Graviton/ARM only
- ENV = Production + main families restricted to burstable types only (t/B/e2)
- Workload = ML/AI + processor filter restricted to Intel/AMD only (no GPU available)
Resolve conflicts before generating recommendations — rules will still run but may produce unexpected results if contradictions are left in place.
Step 7 — Generate and Download Results
- Click 🔄 Generate Recommendations. A progress bar shows processing status for large files.
- Once complete, the download section updates based on what was generated.
-
AWS page — both Like-to-Like and Optimized selected:
three buttons appear:
📥 Download Results CSV — all columns in one file
🧾 Bulk Template (Like-to-Like) — AWS Pricing Calculator format, Like-to-Like instances only
🧾 Bulk Template (Optimized) — AWS Pricing Calculator format, Optimized instances only - AWS page — single type selected: Results CSV + one Bulk Template button.
- Azure / GCP pages: Results CSV only.
🎯 6. Understanding Recommendations
🔄 Like-to-Like Strategy
- The full instance catalogue for the specified region is loaded.
- All instances with vCPUs < required CPU or memory < required memory are removed.
- The Rule Engine applies ENV, OS, Workload, and Compliance filters.
- The cheapest remaining instance is returned (workload preferred families are sorted to the top first).
⚡ N/2, N, N+1 Optimization Strategy
- Calculate target CPU and memory from utilisation data using the 40 %/80 % thresholds.
- Run the same Like-to-Like process against the adjusted targets.
| Scenario | CPU Util | Memory Util | Target CPU | Target Memory |
|---|---|---|---|---|
| Over-provisioned | 25 % | 30 % | Current ÷ 2 | Current ÷ 2 |
| Right-sized | 55 % | 65 % | Current (N) | Current (N) |
| Under-provisioned | 85 % | 40 % | Current + 1 | Current (N) |
| Mixed | 25 % | 85 % | Current ÷ 2 | Current + 1 |
📊 7. Output Columns Explained
The downloaded CSV preserves all original input columns and appends recommendation columns for each selected provider.
Original Input Columns (preserved)
VM Name, CPU Count, Memory (GB), CPU Utilization, Memory Utilization, [Provider] Region, ENV, OS, Workload, Compliance — all returned unchanged.
Recommendation Columns (added per provider)
| Column | Description | Example value |
|---|---|---|
| AWS Like-to-Like Instance | Recommended EC2 instance type (like-for-like) | m6i.xlarge |
| AWS Like-to-Like vCPUs | vCPU count of the recommended instance | 4 |
| AWS Like-to-Like Memory (GiB) | Memory of the recommended instance in GiB | 16 |
| AWS Optimized Instance | Recommended EC2 instance type (optimised) | m6i.large |
| AWS Optimized vCPUs | vCPU count of the optimised instance | 2 |
| AWS Optimized Memory (GiB) | Memory of the optimised instance in GiB | 8 |
| AWS Rules Applied | Pipe-separated list of rules that fired for this row | 1a: Burstable excluded | 1c: Size floor applied |
| AWS No Match Reason | Why no instance was found (no-match rows only) | CPU Count is 0 or missing |
| AWS Nearest Miss | Closest instance that met the CPU/memory requirement, and which filter group(s) excluded it (no-match rows only) | m7i.large (2 vCPU / 8 GB) — relax: current-generation only |
The same pattern applies for Azure and GCP (replacing "AWS" with the provider name).
Status values for recommendation columns
| Value | Meaning |
|---|---|
m6i.xlarge (etc.) |
Successful recommendation |
Missing data |
Required input column (CPU, Memory, or Region) was blank |
No utilization data |
Optimized type selected but CPU/Memory Utilization were 0 or blank |
No data available |
No instance in the region catalogue met the requirements (after rules applied) |
Error |
Unexpected processing error — check browser console for details |
📥 8. Export Options
📄 Standard Results CSV
Available on all provider pages. Downloads a CSV containing all original input columns plus the recommendation columns described in Section 7. This file is ready for:
- Excel / Google Sheets pivot table analysis
- Importing into ITSM or CMDB tools
- Sharing with stakeholders for review
- Filtering by "Rules Applied" to audit environment-specific decisions
📗 Results Excel (.xlsx)
Next to the CSV, 📊 Download Results Excel writes the same rows and columns as a single-sheet workbook with a formatted header row, autofilter, fitted column widths, and numeric columns stored as real numbers — so sorting and filtering behave correctly in Excel with no import dialog or encoding step. The spreadsheet engine loads on first click; everything runs in the browser.
🧾 AWS Pricing Calculator Bulk Template AWS only
Available exclusively on the AWS page after recommendations are generated. Produces a CSV that exactly matches the column schema of the Amazon EC2 Instances worksheet in the AWS Pricing Calculator's Bulk Upload Template.
Column mapping
| Bulk Template Column | Populated from | Default |
|---|---|---|
| Group | ENV column value | Default |
| Description | VM Name | — |
| AWS Region | AWS Region column | — |
| Operating System | OS column (Windows → "Windows Server", else "Linux") | Linux |
| Instance Type | Like-to-Like or Optimized instance type (one per file) | — |
| Tenancy | Fixed | Shared Instances |
| Number of Instances | Fixed | 1 |
| Usage Type | Fixed | Always On |
| Purchasing Options | Fixed | On-Demand |
| Storage columns | Left blank for manual completion | — |
Path A — Bulk Import (recommended for large lists)
- Open AWS Pricing Calculator and click Create estimate.
- Click Bulk import (top-right corner of the estimate view).
- Select the correct service template (EC2 Instances).
- Click Download template, then replace its rows with the CSV downloaded from this tool (Like-to-Like or Optimized — not both).
- Upload the filled template, then click Save and add service or Save and view summary.
Path B — Manual EC2 configuration
- Open AWS Pricing Calculator and click Create estimate.
- Search for EC2 and click Configure.
- Set the region, OS, instance type, and quantity to match the recommended instances.
- Click Save and add service or Save and view summary.
Azure Pricing Calculator steps
- Open the Azure Pricing Calculator.
- Find Virtual Machines and click Add to estimate.
- Scroll down (or click View) to the configuration panel.
- Set the region, OS, tier, and instance size to match the recommended VM types, then save your estimate.
GCP Pricing Calculator steps
- Open the GCP Pricing Calculator.
- Click Add to estimate.
- Select Compute Engine.
- Configure the machine type, region, and quantity to match the recommended instances, then save.
📊 App Portfolio & Executive Excel
Include an App Name column in your inventory and the tool can present the whole estate grouped by application. After generating, an Open App Portfolio button appears in the download section on every provider page.
App → Workload mapping
If your file has App Name but no
Workload column, a mapping panel lets you assign a
workload to each application. Every VM in that application inherits
the workload at generation time — a row's own
Workload cell still takes precedence when present.
App Summary CSV
A per-application rollup — VM count, total vCPUs and memory, and matched vs no-match counts — downloadable from the same download section.
The App Portfolio page
Open App Portfolio hands the current results to a dedicated page in your browser (nothing is uploaded). It opens with:
- Overview tab — estate KPIs, a sortable and searchable application table (ENV mini-bar, match rate, region count and compliance flags per app, expandable to that app's VMs), plus rankings and callouts: biggest apps, worst match rate, compliance-sensitive apps, and unassigned VMs.
- One tab per application — VM / vCPU / memory KPIs, ENV / OS / workload mini-bars, compliance and region chips, the recommended instance-family spread per provider, match health with the top no-match reasons, right-sizing counts (on Optimized runs), and a full per-VM detail table.
Executive Excel workbook
The Download Executive Excel button builds a styled,
multi-sheet .xlsx entirely in the browser:
- Portfolio Summary — one row per application plus an estate TOTALS row, with autofilter and number formatting.
- Contents — clickable links to every sheet.
- One sheet per application (and an Unassigned sheet) — a KPI block and the full per-VM detail table.
- About — a column legend, data dates, and notes.
🔀 Comparing Two Runs (Scenario Comparison)
The download section includes a Scenario comparison bar for measuring what a configuration change actually does to the recommendations:
- Generate recommendations, then click 📌 Pin this run — it becomes scenario A.
- Change filters (or apply a different preset) and generate again.
- Pin the new run (scenario B) and click Compare A ↔ B.
The comparison shows how many VMs changed, the match rate A → B, newly matched and newly unmatched counts, and a table of only the changed rows with old → new values for each recommendation column. Rows are paired by VM Name (or by position when names aren't unique), so use the same input file for both runs. Pinning a third run keeps the two most recent; scenarios are held in memory and clear when the page reloads.
🔧 9. Advanced Filtering
The Advanced Filtering section contains two types of controls: the Rule Engine UI (global defaults for ENV/OS/Workload/Compliance/Min Gen) and provider-specific filters that narrow the instance candidate pool. Provider filters are applied first; the Rule Engine then runs on the already-filtered set.
⚙ Rule Engine UI Controls
Five dropdowns inside Advanced Filtering set rule defaults for the entire batch. These act as a fallback when a CSV row has no value in the corresponding column — per-row CSV values always override them.
| Dropdown | AWS options | Azure options | GCP options |
|---|---|---|---|
| Default Environment | Production / Staging / Dev / Test (same across all providers) | ||
| Default OS | Linux / Windows / macOS (same across all providers) | ||
| Default Workload | General / Database / Web Server / Cache / ML/AI / Batch / HPC | ||
| Default Compliance | PCI / HIPAA / FIPS / SOC2 | ||
| Minimum Generation | Gen 5+ / Gen 6+ / Gen 7+ | v3+ / v4+ / v5+ | N2 / N2D / N4 |
🚨 Conflict Detection
When a UI selection directly contradicts another filter, the conflicting control is highlighted with a red border and an inline warning message. Three conflict types are detected:
| Conflict | What triggers it | Highlighted control |
|---|---|---|
| OS ↔ Processor | OS = Windows AND all selected processor filters are ARM/Graviton-only | Default OS dropdown |
| ENV/Compliance ↔ Families | ENV = Production or Compliance set, AND main family filter includes only burstable types (t/B/e2) | Default Environment or Default Compliance dropdown |
| Workload ↔ Processor | Workload = ML/AI AND processor filter excludes all GPU/ARM options | Default Workload dropdown |
🔶 AWS-Specific Filters
| Filter | Description |
|---|---|
| Current Generation Only | Excludes previous-generation families (t2, m4, c4, r4, etc.). Recommended for all new deployments. |
| Instance Family Names | Restrict to specific family categories: General Purpose, Compute Optimised, Memory Optimised, Storage Optimised, Accelerated Computing |
| Processor Manufacturer | Intel, AMD, or AWS (Graviton/ARM). Note: selecting AWS Graviton and then setting OS = Windows via the CSV column will still exclude Graviton — OS rules always take priority. |
| Main Family Prefix | Restrict by family prefix (t, m, c, r, x, z, p, g, i, d…) |
| Exclude Types | Exclude individual type classes: Graviton/ARM, GPU, Mac instances, previous generation, Nitro-only |
🔷 Azure-Specific Filters
| Filter | Description |
|---|---|
| VM Series | Filter by series: B (burstable), D (general), E (memory), F (compute), H (HPC), L (storage), M (large memory), N (GPU) |
| Processor Architecture | Intel x86-64, AMD EPYC, ARM (Ampere) |
| VM Families | Filter by specific family strings (dv5, ev5, fsv2…) |
| Exclude Types | Exclude ARM, GPU, or burstable categories |
🔴 GCP-Specific Filters
| Filter | Description |
|---|---|
| Machine Families | E2, N1, N2, N4, C2, C2D, C3, C3D, C4, M1, M2, M3, M4, A2, A3, G2, T2D, T2A, H3, Z3 |
| CPU Platform | Intel, AMD, ARM |
| Machine Type Prefix | Filter by standard, highmem, highcpu, ultramem |
| Exclude Types | Exclude ARM (T2A), GPU, or shared-core families |
⭐ Filter Presets
The bar above the Generate Recommendations button saves the entire configuration under a name — recommendation type, optimization thresholds, the five Rule Engine defaults, every provider filter, and the exclude-type selections (plus the provider checkboxes on the Multi-Cloud page).
- 💾 Save current as… — snapshot the current controls under a new name; a name box opens right in the bar.
- Apply — restore a preset; dependent panels (optimization ranges, exclude grids) rebuild automatically.
- Update / Delete — overwrite a preset with the current settings, or remove it. Both (and saving over an existing name) ask for a second confirming click, so a stray click can't destroy a preset.
- 📤 Export / 📥 Import — download the page's presets as a JSON file and import them in another browser or on another machine. Imports never overwrite: a name you already have comes in with an "(imported)" suffix.
Presets are scoped to the page they were saved on (an AWS preset doesn't appear on Azure) and are stored in your browser's local storage — they never leave your machine unless you export them, and they survive reloads. Nothing is applied automatically: a preset takes effect only when you click Apply.
☁ 10. Multi-Cloud Comparison
The Multi-Cloud page processes a single CSV against all three providers simultaneously, producing side-by-side recommendations in one output file. This is useful for migration planning, vendor selection, and lock-in risk assessment.
CSV Format for Multi-Cloud
Include region columns for every provider you want to compare. Providers with a blank or missing region column are skipped for that row.
VM Name,App Name,CPU Count,Memory (GB),CPU Utilization,Memory Utilization,AWS Region,Azure Region,GCP Region,ENV,OS,Workload,Compliance,Min Gen web-server-01,Storefront,4,16,45,60,us-east-1,East US,us-central1-a,Production,Linux,Web Server,, db-server-02,Billing,8,32,70,80,us-west-2,West US 2,us-west1-b,Production,Windows,Database,PCI,
Regional Equivalents Reference
| Geography | AWS Region | Azure Region | GCP Region |
|---|---|---|---|
| US East | us-east-1 | East US | us-east1-b |
| US West | us-west-2 | West US 2 | us-west1-b |
| Europe West | eu-west-1 | North Europe | europe-west1-c |
| Europe Central | eu-central-1 | Germany West Central | europe-west3-a |
| Asia Pacific (SE) | ap-southeast-1 | Southeast Asia | asia-southeast1-a |
| Asia Pacific (NE) | ap-northeast-1 | Japan East | asia-northeast1-a |
Interpreting Multi-Cloud Output
The output CSV contains recommendation columns for every selected provider in the same row, making it easy to filter in Excel or Google Sheets:
- Sort by VM Name to see all providers for each workload
- Use the "Rules Applied" columns to understand why providers differ
- Provider pricing calculators should be used to compare actual costs — do not compare instance types directly as the vCPU/memory ratio differs across providers
🔧 11. Troubleshooting
File Upload Problems
| Problem | Likely Cause | Solution |
|---|---|---|
| "CSV parsing failed" | Special characters, wrong encoding, or malformed CSV |
Save the file as UTF-8 CSV (not UTF-8 BOM). Remove characters like
< > & from data
values. Check for unescaped commas inside quoted fields.
|
| "File too large" | CSV exceeds 10 MB | Split into smaller batches. Remove unused columns. Filter to the VMs you need recommendations for. |
| "Missing required columns" | Column name mismatch | Column names are matched case-insensitively and with space/underscore normalisation, but the exact words must be present. Download the sample CSV template and compare your headers. |
| "Invalid region name" | Typo or wrong provider format |
AWS regions use hyphens: us-east-1. Azure uses
display names: East US. GCP uses zone format:
us-central1-a.
|
Recommendation Problems
| Problem | Cause | Solution |
|---|---|---|
| "No data available" for all VMs | Region not recognised, or filters eliminated every candidate | Check the Region Check panel after upload — red chips mean the region isn't in the catalogue. If regions are green or amber (auto-resolved), read the Nearest Miss column: it names the closest candidate and the filter group to relax. |
| Recommendations seem too large | Utilisation data is missing or zero — falling back to Like-to-Like | Ensure CPU Utilization and Memory Utilization columns contain non-zero values when using Optimized mode. |
| No recommendation after ENV = Production | Rule engine eliminated all candidates | Check the Rules Applied and Nearest Miss columns — the latter names the closest candidate and which filter excluded it. Try relaxing the Advanced Filtering options. Ensure the region has current-generation instances (all major regions do). |
| Windows VMs getting ARM recommendations | OS column is blank or misspelled |
Set the OS column to exactly Windows or
Windows Server for affected rows.
|
| Optimized same as Like-to-Like | Utilisation in the 40–80 % "keep same" zone | This is expected — the N/2,N,N+1 strategy keeps the same size when utilisation is in the right-sized band. |
Browser / Performance Problems
| Problem | Solution |
|---|---|
| Generation waits after clicking the button | Instance data loads per region on demand; if your CSV's regions are still downloading, the run is queued and starts automatically once they arrive — no action needed. On repeat visits the data is served from the offline cache. |
| Download button does nothing | Check that your browser's pop-up blocker is not intercepting the download. Allow pop-ups for the site or use a different browser. |
| Processing hangs on large files | Split files larger than 2,000 rows into batches. Close other browser tabs to free memory. Refresh the page (this also clears the loaded instance data — allow time to reload). |
| Results CSV opens as garbled text in Excel | When opening a CSV in Excel, use Data → From Text/CSV and select UTF-8 encoding. Do not double-click the file directly. |
✨ 12. Best Practices
📊 Data Collection
- Collect at least 30 days of utilisation data; 90 days is ideal to capture seasonal variation
- Use the P95 or P99 percentile for CPU if your workload is spiky — average metrics underestimate peak demand
- Memory utilisation from the OS is more reliable than hypervisor-reported figures — use OS-level agents where possible
- Tag VMs with their ENV, OS, and Workload in your CMDB and export that metadata directly into the CSV
🚀 Recommendation Implementation
- Start with Dev/Test environments — fast to change and low risk if something is wrong
- For Production, use Like-to-Like first to establish a safe baseline, then consider Optimized for a second wave
- Always have a rollback plan: snapshot or image the VM before resizing
- Monitor for 48–72 hours after a resize before treating it as complete
💰 Cost Strategy
- Use this tool to identify the right instance type — then separately apply Reserved Instance or Savings Plan pricing in the provider's pricing calculator
- Re-run the tool quarterly for dynamic workloads; semi-annually for stable production systems
- After a cloud migration, re-run with actual utilisation data from the new environment — the right-sizing picture often changes after migration
🔒 Security & Compliance
-
Set
Compliance = PCIorCompliance = HIPAAin the CSV for regulated workloads to ensure Nitro-capable (AWS) and current-gen-only instances are recommended - For FIPS-boundary requirements, manually verify that recommended regions are within your geographic compliance boundary
- No inventory data ever leaves your browser — the tool is fully client-side
❓ 13. Frequently Asked Questions
🌟 General
Q: Is my data secure?
A: Yes. All processing happens in your browser — your VM inventory never
leaves your machine. The tool loads a static instance catalogue at
start-up; there is no backend server receiving your data.
Q: Why doesn't the output include pricing?
A: Cloud pricing is not static — it changes with region, OS, discounts,
Savings Plans, Reserved Instances, and enterprise agreements. Showing a
price in the output would be misleading within weeks. This tool
identifies the right instance type; use your provider's pricing
calculator for accurate cost figures. The AWS Pricing Calculator Bulk
Template export makes this workflow seamless for AWS.
Q: Can I use this tool offline?
A: Yes — after your first visit. A service worker caches the pages and
any region data you've used, so those keep working without connectivity,
and you can optionally install the site as an app from your browser.
Regions you've never loaded still need one online visit. Updates are
picked up automatically the next time you're online.
Q: Which file formats are supported?
A: CSV (UTF-8) and Excel .xlsx workbooks — the first sheet
is used. Common header variants like vCPUs,
RAM, or Hostname are mapped to the expected
columns automatically.
Q: Can I save my filter configuration for next time?
A: Yes — use the ⭐ Filter presets bar above the Generate button to save
the current configuration under a name and re-apply it later. Presets
are per page and stored in your browser, and can be exported as a JSON
file to move them to another browser or machine (see Section 9).
⚙ Technical
Q: Why does the tool recommend a different instance than our cloud
provider's own advisor?
A: Provider advisors (AWS Trusted Advisor, Azure Advisor) typically look
at longer time horizons (14–90 days) and use conservative thresholds.
This tool applies your chosen utilisation window and thresholds. The
recommendations can legitimately differ — treat both as data points
rather than absolute answers.
Q: Why are the downsize thresholds set to 40 % instead of 50
%?
A: The 40 %/80 % thresholds align with the approach used by AWS Cost
Optimisation, Azure Advisor, and GCP Recommender. At 40 %, there is
still comfortable headroom for traffic spikes and OS/monitoring
overhead. The old 50 % default was too aggressive for most production
workloads. You can adjust both thresholds in the UI if your environment
requires different values.
Q: I set ENV = Production but got a t3.large recommendation.
Why?
A: Check the Rules Applied column — the rule engine reports exactly what
happened. If "1a: Burstable excluded" is not listed, verify that the ENV
column value is exactly Production (no extra spaces or
different capitalisation).
Q: Can I use a mix of ENVs in the same CSV?
A: Yes — rules are applied per row. You can have Production, Staging,
and Dev rows in the same file; each gets its own rule evaluation.
Q: What happens if no instance survives after all rules are
applied?
A: The tool notes the failure in the Rules Applied column with a ⚠
warning and falls back to the best available instance from the pre-rules
candidate set. This is a signal to either relax filters or review
whether the requirements are achievable in that region.
💼 Business
Q: What typical savings can I expect?
A: Organisations commonly see 15–40 % reduction in compute spend from
right-sizing alone, before applying Reserved Instances or Savings Plans.
The actual figure depends heavily on how over-provisioned the original
fleet is.
Q: How often should I re-run the tool?
A: Monthly for dynamic/seasonal workloads; quarterly for stable
production workloads; immediately after any significant architectural
change or traffic pattern shift.
Q: Can I share results with stakeholders who don't have access to the
tool?
A: Yes — the downloaded CSV can be opened in Excel or Google Sheets. The
"Rules Applied" column provides plain-English audit notes explaining
every recommendation, making it straightforward to present to
non-technical stakeholders.
Q: Is the AWS Pricing Calculator Bulk Template ready to import
immediately?
A: It populates all required columns with On-Demand, Always On, Shared
Instances defaults. You will need to manually add storage details (EBS
volume type, size, IOPS) in the calculator after import if required for
your estimate.
🎯 14. Conclusion
The Cloud Instance Recommender gives you a fast, privacy-first starting point for cloud rightsizing at any scale — from a handful of VMs to thousands. By combining flexible like-to-like and optimised recommendation modes with a configurable rule engine, it produces recommendations that are not just cheap, but appropriate for the environment, OS, workload type, and compliance posture of each individual VM.
Key things to remember:
- Add ENV, OS, Workload, and Compliance columns to get environment-aware recommendations with a full audit trail
- Use the 40 %/80 % thresholds as a starting point — adjust them based on whether your utilisation data is averages or percentiles
- Pricing is intentionally excluded from output — use the AWS Pricing Calculator Bulk Template export for cost estimation
- Treat recommendations as an informed starting point, not a final answer — validate in a non-production environment first
- Re-run quarterly to keep pace with changing workloads and the cloud providers' expanding instance catalogues