Cloud Instance Recommender

Complete User Guide

🔶 AWS EC2 🔷 Azure VMs 🔴 GCP Compute ☁ Multi-Cloud
📅 July 2026 👥 IT Professionals · Cloud Architects · DevOps Engineers

🆕 What's New

🕘 Earlier Updates

📋 Table of Contents

📖 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:

  1. Open your browser and navigate to the Cloud Instance Recommender URL.
  2. From the homepage, select your target: AWS, Azure, GCP, or Multi-Cloud.
  3. Each provider page loads independently with provider-specific filtering options.
Tip Instance data loads per region, on demand — pages open in moments and only the regions your inventory references are fetched. If you click Generate before the data finishes loading, the run is queued and starts automatically.

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

📋 Input Columns

The columns a CSV row can carry are below; column names are auto-detected (case-insensitive, spaces/underscores normalised). VM Name, CPU Count, Memory (GB) and one provider Region are required; the rest are optional, or needed only for Optimized recommendations, as noted against each row.

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
Disk (GB) Optional. Provisioned disk, carried through to the outputs and written into the AWS bulk template's Storage amount per Instance (GB) field, which was previously blank. A header ending in MB or MiB (RVTools reports Provisioned MiB) is converted to GB on ingest, the same way memory is. It does not affect sizing — CPU Count and Memory (GB) still drive that. 512
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 % — used for Optimized recommendations when available; a row can also be sized on its p95 or Peak reading (see below) 45
Memory Utilization Average memory utilisation % — used for Optimized recommendations when available; a row can also be sized on its p95 or Peak reading (see below) 60
CPU Utilization p95 Memory Utilization p95 Optional 95th-percentile readings. Used when Size against is set to p95 — an average hides bursts, so a VM averaging 20% with a p95 of 85% is not the downsize candidate its average suggests. 85
CPU Utilization Peak Memory Utilization Peak Optional peak/max readings, used when Size against is set to Peak. A "Max CPU" column auto-maps here rather than to the average. 97

Which statistic sizes a row. The Size against selector in Optimization Settings chooses between Average (the default), p95 and Peak. A row that does not carry the chosen statistic falls back to what it does have — preferring the higher remaining one, since sizing against a lower number than you asked for under-provisions — and every row reports the basis actually used in a Sized On column, so a recommendation can always be traced to the number behind it.

⚙ 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, SQL Server, Web Server, Cache, ML/AI (or GPU), Batch, HPC, SAP General Preferred instance families sorted first before cheapest selection
Compliance PCI, HIPAA, SOC2, FIPS None Forces current-gen + Nitro Enclaves (AWS PCI/HIPAA)
Min Gen AWS 5, 6, 7
Azure 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)
How rules are applied Rules are evaluated per-row — each VM in your CSV can have different ENV, OS, Workload, and Compliance values. A Rules Applied column in the output CSV documents exactly which rules fired for each VM.

🏷 Current Instance Type (optional)

Not a rule-engine column, and not required — but if your VMs already run in a cloud, a Current Instance Type column lets the recommendation be read directly against what it replaces. Also recognised as Instance Type, VM Size, Machine Type, or Current Size. Examples: m5.xlarge, Standard_D4s_v3, n2-standard-4.

It is carried through to the preview and every export untouched, and sits immediately left of the recommended instances. By default it does not affect sizing — CPU Count and Memory (GB) drive that, and two VMs with the same CPU and memory get the same recommendation however different the machines they run on today. The exception is cloud-to-cloud mode, where a row that omits CPU Count and Memory (GB) is sized from its Current Instance Type instead.

📄 Sample CSV Structure

VM Name,App Name,CPU Count,Memory (GB),CPU Utilization,Memory Utilization,AWS Region,ENV,OS,Workload,Compliance,Min Gen,Exclude,Current Instance Type
web-server-01,Storefront,4,16,45,60,us-east-1,Production,Linux,Web Server,,6,,m5.xlarge
db-server-02,Billing,8,32,70,80,us-west-2,Production,Windows,Database,PCI,7,"Burstable,GPU",m5.2xlarge
app-server-03,Billing,2,8,35,45,eu-west-1,Dev,Linux,General,,,,t3.large
cache-server-04,Storefront,4,16,25,30,us-east-1,Staging,Linux,Cache,,6,Burstable,m5.xlarge
ml-server-05,Analytics,8,64,80,75,us-west-2,Production,Linux,ML/AI,HIPAA,7,,r5.2xlarge
Formatting rules Save files as UTF-8 CSV. Do not include currency symbols or % signs in numeric columns — the tool strips them automatically. Region names must match the exact format shown in the in-app sample template.

💡 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:

🛡 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.

⚡ Rule 1a — Burstable Exclusion
When: ENV = Production or Staging
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
🕐 Rule 1b — Generation & Compliance
When: ENV = Production OR Compliance set
Effect: Current-generation instances only

Additionally for AWS PCI/HIPAA:
Nitro Enclaves support required

Rationale: Prev-gen lacks modern security features
📏 Rule 1c — Minimum Size Floor
When: ENV = Production or Staging
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
🌐 Rule 1d — Network Preference
When: ENV = Production AND Workload = Database or Web Server
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
🖥 OS — Compatibility Rules
OS = Windows / Windows Server:
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
🎯 Workload — Family Preference
Sorts recommended families to the top before cheapest-selection runs. Falls back to cheapest overall if no preferred family has matching instances.

🔢 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…
Multi-Cloud Min Gen On the Multi-Cloud page, Min Gen uses AWS generation numbers (5/6/7) as a unified reference. Azure values are mapped by subtracting 2 (AWS 6 → Azure v4), and GCP values are mapped to the corresponding generation tier.

🎯 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
SQL Server r, x, z (Memory-optimised) — minimum 4 vCPUs E-series, M-series M1, M2, M3, M4
Cache r, x (Memory-optimised) E-series, M-series M1, M2, M3
ML/AI (GPU) 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+
SQL Workload = SQL Server Remove candidates below 4 vCPUs (licence minimum) SQL: 4-vCPU licence floor
BP ENV = Dev/Test + measured CPU below the downsize threshold; known-high memory withholds the preference (unknown memory is allowed) Prefer burstable families (the inverse of 1a) BP: Burstable preferred (Dev/Test, low utilization)
GA Workload = ML/AI (or GPU) Require a GPU / ML ASIC / FPGA instance GPU: accelerator required
GA Any other workload, blank included Exclude accelerator instances GPU: accelerators excluded (non-GPU workload)
Why accelerators are excluded by default A GPU box is not a substitute for a general-purpose one of the same shape — it costs far more and carries hardware the workload will never use. Because sizing picks the cheapest adequate instance, a row that never asked for a GPU could otherwise land on one: before this rule existed, a plain 48 vCPU / 192 GB request on GCP picked g2-standard-48. Set Workload to ML/AI on the rows that genuinely want an accelerator. Neither direction can produce a blank result: if the filter would leave no candidates, the rule is skipped and the row says so (GPU: no accelerator available (not applied)).

Migrating an existing GPU fleet? This exclusion applies to the Like-to-Like match too, so a VM that runs on a GPU box today will be matched to a CPU-only instance of the same shape unless its Workload is set to ML/AI (or GPU). Label those rows so their accelerator hardware is preserved.
Fallback behaviour If a combination of rules eliminates all candidate instances (e.g., Production + PCI + very small CPU/memory requirement), the engine notes this in the Rules Applied column with a warning and falls back to the closest available instance. Check the Rules Applied column if you see unexpected recommendations.

📋 5. Step-by-Step Usage Guide

Step 1 — Choose Your Cloud Provider

Step 2 — Download and Prepare the Template

  1. Click Download Sample CSV on the provider page to get a template with the correct column headers.
  2. Replace the sample rows with your actual VM inventory. Include the optional ENV, OS, Workload, and Compliance columns where applicable.
  3. Save the file as UTF-8 CSV.

Step 3 — Upload Your CSV

  1. Drag and drop your CSV onto the upload zone, or click it to browse.
  2. The tool automatically validates the file, checks required columns, shows a data preview, and assigns a quality score (0–100 %).
  3. 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

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
These defaults are editable The downsize and keep-max thresholds can be adjusted in the UI. For example, if you use P95 utilisation data (not averages), you may want to lower the downsize threshold to 30 %.

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:

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

  1. Click 🔄 Generate Recommendations. A progress bar shows processing status for large files.
  2. Once complete, the download section updates based on what was generated.
  3. AWS page — both Like-to-Like and Optimized selected: three buttons appear:
    📊 Download Results (Excel) — the full workbook (the primary download); flat CSVs are behind the CSV ▾ menu
    🧾 Bulk Template (Like-to-Like) — AWS Pricing Calculator format, Like-to-Like instances only
    🧾 Bulk Template (Optimized) — AWS Pricing Calculator format, Optimized instances only
  4. AWS page — single type selected: Results CSV + one Bulk Template button.
  5. Azure / GCP pages: Results CSV only.

🎯 6. Understanding Recommendations

🔄 Like-to-Like Strategy

  1. The full instance catalogue for the specified region is loaded.
  2. All instances with vCPUs < required CPU or memory < required memory are removed.
  3. The Rule Engine applies ENV, OS, Workload, and Compliance filters.
  4. The cheapest remaining instance is returned (workload preferred families are sorted to the top first).

⚡ N/2, N, N+1 Optimization Strategy

  1. Calculate target CPU and memory from utilisation data using the 40 %/80 % thresholds.
  2. 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 Family The family category the recommended instance belongs to, as the provider itself classifies it General purpose
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 Family Family category of the optimised instance General purpose
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).

Why no pricing in the output? Cloud pricing changes frequently and varies with discounts, reserved instances, Savings Plans, and enterprise agreements. This tool uses pricing internally to rank candidates and find the cheapest match, but does not surface prices in the output CSV to avoid giving users stale or context-free figures. Always verify pricing in the official AWS/Azure/GCP pricing calculators before making commitments.

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:

📗 Results Excel (.xlsx)

📊 Download Results (Excel) is the primary download: a workbook with a Recommendations sheet (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) plus one sheet per alternative strategy. The flat CSV exports (Results, No-Match Rows, App Summary) live behind the CSV ▾ checklist beside it — tick the ones you want and click Download selected. 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
One file per recommendation type When both Like-to-Like and Optimized are generated, two separate bulk template buttons appear — one for each type. Always import only one file per estimate so you don't double-count instances and inflate the pricing figure.

Path A — Bulk Import (recommended for large lists)

  1. Open AWS Pricing Calculator and click Create estimate.
  2. Click Bulk import (top-right corner of the estimate view).
  3. Select the correct service template (EC2 Instances).
  4. Click Download template, then replace its rows with the CSV downloaded from this tool (Like-to-Like or Optimized — not both).
  5. Upload the filled template, then click Save and add service or Save and view summary.

Path B — Manual EC2 configuration

  1. Open AWS Pricing Calculator and click Create estimate.
  2. Search for EC2 and click Configure.
  3. Set the region, OS, instance type, and quantity to match the recommended instances.
  4. Click Save and add service or Save and view summary.

Azure Pricing Calculator steps

  1. Open the Azure Pricing Calculator.
  2. Find Virtual Machines and click Add to estimate.
  3. Scroll down (or click View) to the configuration panel.
  4. Set the region, OS, tier, and instance size to match the recommended VM types, then save your estimate.

GCP Pricing Calculator steps

  1. Open the GCP Pricing Calculator.
  2. Click Add to estimate.
  3. Select Compute Engine.
  4. 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:

Executive Excel workbook

The Download Executive Excel button builds a styled, multi-sheet .xlsx entirely in the browser:

No pricing, no upload As everywhere else in the tool, no pricing appears in any sheet, and the data is passed to the portfolio page in-browser — it never leaves your machine.

🔀 Comparing Two Runs (Scenario Comparison)

The download section includes a Scenario comparison bar for measuring what a configuration change actually does to the recommendations:

  1. Generate recommendations, then click 📌 Pin this run — it becomes scenario A.
  2. Change filters (or apply a different preset) and generate again.
  3. 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
Conflicts are warnings, not blockers The tool will still generate recommendations when conflicts exist, but the results may not match your intent. Resolve the conflict before generating for best results.

🔶 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).

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,Exclude,Current Instance Type
web-server-01,Storefront,4,16,45,60,us-east-1,East US,us-central1-a,Production,Linux,Web Server,,,,m5.xlarge
db-server-02,Billing,8,32,70,80,us-west-2,West US 2,us-west1-b,Production,Windows,Database,PCI,,"Burstable,GPU",m5.2xlarge

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:

🔧 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

🚀 Recommendation Implementation

💰 Cost Strategy

🔒 Security & Compliance

❓ 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. A workbook with several sheets opens the one whose columns best match an inventory — an RVTools export lands on its vInfo sheet rather than its cover tab — and a picker lets you switch. Common header variants like vCPUs, RAM, or Hostname are mapped to the expected columns automatically.

Q: I mapped my columns wrong once and now it keeps doing it. How do I undo that?
A: When you confirm the column-mapping panel, that answer is remembered against your file's set of headers, and any later file with the same headers is mapped the same way without asking. Everything remembered is listed under Remembered column mappings in the upload section, with a Forget button on each. Forget one and the next file with those headers will ask again.

Q: I don't have a file at all. What are my options?
A: Three. Enter VMs manually takes them one at a time — and if you have several that are alike, set Copies and they are added numbered from the name you gave (webweb-01…web-05); any row can be corrected afterwards with the ✏️ button rather than deleted and retyped. Paste rows from a spreadsheet takes them straight from Excel. And under the sample template there are three ready-made datasets to load — a clean one, a 500-VM one, and a deliberately messy one that shows what the input check catches.

Q: Can I paste rows instead of uploading a file?
A: Yes — Or paste rows from a spreadsheet under the upload box. Copy the cells out of Excel or Google Sheets, header row included, and paste. It is read exactly like an uploaded file: the same column mapping, the same unit handling, the same input check.

Q: The tool says some of my rows look wrong. What is it checking?
A: After an upload, the input check names rows that will not size sensibly — a missing or zero CPU count or memory figure, a CPU count or memory size no provider sells (usually a unit that was never converted), a utilization outside 0–100%, or a blank VM name — and gives you the row numbers as your spreadsheet shows them. It is a report, not a gate: the file still loads and you can still generate. If the same VM name appears more than once, it asks whether those are one VM listed twice or different VMs that share a name, because only you know.

Q: Can I upload an AWS Application Discovery Service export?
A: Yes — the ADS import template is recognised and needs no mapping. Its logical-core count becomes the vCPU count (not the socket or physical-core count), RAM.TotalSizeInMB becomes memory, and memory utilisation — which ADS does not report as a percentage — is worked out from the memory used against the memory total. Without that last step your VMs could only be sized on CPU, and their memory would be left exactly as it is.

Q: Can I upload an RVTools export directly?
A: Yes. The vInfo sheet is found and read, its VM column is used for the VM name — not Host, which is the ESXi server the VM runs on — and its Memory column, which holds MiB although the header does not say so, is converted to GB. The file status confirms it was recognised as an RVTools export.

Q: My memory column is in MB. Will that work?
A: Yes. A header that says so (Memory (MB), RAM MiB) is converted, as is a format that is recognised — an RVTools export reports MiB without saying so, and that is known. When neither the header nor the format says, the values are not taken as proof: if they look like MiB, the input check asks, and nothing is converted until you answer. A fleet of genuine 512 GB machines is unusual but real, and dividing it by 1024 would be its own kind of corruption. You can also set the unit yourself in the column-mapping panel.

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:

Happy Optimising! Cloud right-sizing is an ongoing discipline, not a one-time exercise. Build it into your regular operational cadence and it will continue to compound savings over time.