Cloud Instance Recommender

Complete User Guide

๐Ÿ”ถ AWS EC2 ๐Ÿ”ท Azure VMs ๐Ÿ”ด GCP Compute โ˜ Multi-Cloud
๐Ÿ“… October 2026 ๐Ÿ‘ฅ IT Professionals ยท Cloud Architects ยท DevOps Engineers

๐Ÿ†• What's New

๐Ÿ•“ Recent Updates

๐Ÿ•˜ Earlier Updates

๐Ÿ“‹ Table of Contents

๐Ÿ“– 1. Introduction

Welcome to the Cloud Instance Recommender, a client-side, auditable rule-evaluation engine for cloud infrastructure decisions. Sizing across AWS, Azure, and Google Cloud Platform is its first and most developed policy set โ€” evaluated entirely in your browser, with no data ever uploaded to an external server.

This distinction matters for a specific kind of buyer: regulated-industry infra teams, government contractors, air-gapped or data-residency-constrained shops, and MSPs handling client data often cannot accept a mainstream sizing platform's default SaaS connection back to the vendor, even where a self-hosted tier exists elsewhere in that platform's lineup. This tool has no such connection to disable or negotiate around โ€” nothing it processes ever leaves the browser. Nothing here changes who can use the tool; it changes who this guide, and the product roadmap, are written for.

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 60 regions B, D, E, F, H, L, M, N, NC, ND, NVโ€ฆ ARM (Dpdsv5, Bpsv2), Burstable B-series detection
GCP Compute 46 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), at most 100,000 rows and 500 columns; a workbook that expands to more than 200 MB is refused before it is opened
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 what you set or ask for: preferences, saved column mappings, filter presets, custom rules, manual VMs and, if you save them, fleet snapshots, which include the columns you uploaded. The uploaded file itself is never 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 p90, p95, p99 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 p90, p95, p99 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
Criticality Optional: Critical, High, Medium, Low. How costly an outage of this VM is. A value outside this list is named in the input check. It changes a recommendation only when Size against is set to the per-row policy. High
CPU Utilization p90 Memory Utilization p90 CPU Utilization p99 Memory Utilization p99 Optional 90th- and 99th-percentile readings, used when Size against is set to p90 or p99. Same fallback rules as p95. 78 / 93
CPU Utilization p50 Memory Utilization p50 Optional median readings. They map and are carried, but they never size a row: a median sits below the average for a bursty VM. The scale-out advisory reads it next to Peak (see the App Portfolio page). 12
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), p90, p95, p99, Peak and a per-row policy (below). 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.

The per-row policy. Choosing Per-row policy (ENV, Criticality, Workload) sizes each row on the statistic its own ENV, Criticality and Workload select, instead of one statistic for the whole file. Criticality and Workload each name a statistic and the higher one wins; the row's ENV then caps it, so a Dev VM is never sized on the figure a Production VM is. The defaults: Production Critical p99, High p95, Medium and Low p90; a Database takes at least p95 and a Batch VM Peak; Production may reach Peak, Staging p95, and Dev, Test and QA stay on the average; memory is held at p95 or below, since memory is rarely bursty. A blank or unrecognised ENV is treated like Production and a blank Criticality like Medium, because when it is unclear the higher figure is the safe one; the Sized On cell says when it assumed. If a row lacks the statistic its policy asks for, it falls back exactly as above. A policy that is not valid stops the run with the problem named rather than guessing.

The safety veto. Sizing on a statistic can still miss a VM that is saturating. So in a per-row policy run, when a row would be downsized on CPU or memory, the tool also looks at that dimension's own readings: if its Peak is 95% or more, or its p95 is above 85%, the downsize is held — that dimension keeps its current size — and the row is marked in a Review Flag column, for example CPU downsize held for review: Peak 97% reaches 95%. Look at those rows by hand. A VM that is not being downsized is never flagged, a missing Peak or p95 never holds anything, and the column is blank for every other row. The two thresholds are defaults, and the veto applies only to per-row policy runs; the other statistics size exactly as before.

โš™ 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, Analytics (Spark/big data), File Server (or Backup), NoSQL (or Search), Application Server (or Middleware), Container Host, Build Farm (CI/CD), Domain Controller (or Jump Box) General Preferred instance families sorted first before cheapest selection
Compliance Comma-separated, like Exclude: Current-Generation Hardware, AWS Nitro Enclaves, Confidential Computing, Azure Trusted Launch. Legacy PCI/HIPAA/SOC2/FIPS still work (see below). None Tightens instance selection toward each requirement's real signal โ€” see "Security & Compliance" below. Does not certify PCI/HIPAA/SOC2/FIPS compliance itself.
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). On AWS and Azure, a whole number above zero (6 or 6.0) is a valid Min Gen; anything else is not applied. On GCP, a listed family name (n2, n2d, n4) is valid instead. Rules Applied says when a value wasn't applied.
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 names "Current-Generation Hardware" (legacy PCI/HIPAA/SOC2/FIPS all expand to this)
Effect: Current-generation instances only

Independently, Compliance names "AWS Nitro Enclaves" (legacy PCI/HIPAA also expand to this) on AWS:
Nitro Enclaves support required. "Confidential Computing" reuses this same check on AWS, plus a Azure dc*/ec* family match; no signal exists on GCP. "Azure Trusted Launch" requires the real trusted_launch field on Azure only.

Rationale: prev-gen lacks modern security features; the rest are real per-instance signals, not certifications โ€” see "Security & Compliance" below.
๐Ÿ“ 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 has one dropdown per provider (AWS, Azure, GCP), each in that cloud's own scale, and a file can carry AWS Min Gen, Azure Min Gen and GCP Min Gen columns. Nothing is translated between clouds.

๐ŸŽฏ 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 names Current-Generation Hardware (PCI/HIPAA/SOC2/FIPS all expand to this) Current-gen only 1b: Prev-gen excluded
1b-Nitro Compliance names AWS Nitro Enclaves (PCI/HIPAA expand to this too) + AWS Nitro Enclaves required 1b: Nitro required (Compliance)
1b-Confidential Compliance = Confidential Computing + AWS/Azure (no signal on GCP) AWS: Nitro reused. Azure: dc*/ec* family match 1b: Confidential computing required (Compliance)
1b-TrustedLaunch Compliance = Azure Trusted Launch + Azure The real trusted_launch field required 1b: Trusted Launch 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. Or click Download Excel Template for a workbook whose ENV, OS, Workload, and Criticality cells are dropdowns, so a mistyped value cannot slip in. Its Read me and Allowed values sheets explain each column; the tool reads the Inventory sheet.
  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 validates the file, checks required columns, and shows a data preview and an input check (see the FAQ below).
  3. Review any warnings before proceeding โ€” common issues include missing region columns or non-numeric CPU/memory values.

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 / SQL Server / Web Server / Cache / ML/AI / Batch / HPC / SAP / Analytics / File Server / NoSQL / Application Server / Container Host / Build Farm / Domain Controller Sets family preference order for all rows
Default Compliance Checkboxes, any combination โ€” Current-Generation Hardware / AWS Nitro Enclaves / Confidential Computing / Azure Trusted Launch (each page shows only the ones with a real effect there) Tightens instance selection toward each checked requirement
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: Download Results (Excel), the CSV โ–พ menu, and one Bulk Template button.
  5. Azure / GCP pages: Download Results (Excel), with the Results CSV behind the CSV โ–พ menu.

๐ŸŽฏ 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 dollar figures 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 an absolute dollar figure anywhere โ€” no price column, no CSV field, no export sheet. Since 3.17, the stats bar, the App Portfolio Overview, and the Executive Print Report show one aggregate, relative figure per provider instead โ€” "Optimized ranks ~X% lower than Like-to-Like" โ€” always paired with the data-freshness date and a reminder to check 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 amount per Instance (GB) Disk (GB) column, rounded up to a whole GB (blank when the file had none) โ€”
Storage Type, IOPS, throughput Always left blank for the calculator to default โ€”
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, and the number of scale-out candidates โ€” downloadable from the same download section. The last column is blank, not 0, for an application where no VM carried both a median and a peak.

The App Portfolio page

Open App Portfolio hands the current results to a dedicated page in your browser (nothing is uploaded). It opens with:

The scale-out advisory. A VM whose median (p50) utilization is 20% or less while its Peak reaches 80% or more is listed as a scale-out candidate, with its reasons, for example "CPU: low p50 (10%), high Peak (95%)". CPU and memory are judged separately. It needs both readings: a VM without a median and a peak is not judged, which is different from "not a candidate", so the counts read "1/2 judged" and the detail column stays blank for the VM that could not be judged. It is guidance, not an action: a low median with a high peak can suit a smaller base instance behind a load balancer, but this tool sizes instances and does not configure autoscaling. The thresholds are defaults.

Executive Excel workbook

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

No dollar figures, no upload No absolute price ever appears in any exported sheet โ€” the Overview tab's relative "Optimized ranks ~X% lower" KPI (since 3.17) lives only on the live in-browser page, not in this workbook. The data is passed to the portfolio page in-browser, too โ€” 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. Up to six runs can be pinned and named in place; with three or more, Compare all shows an N-way matrix. 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 / SQL Server / Web Server / Cache / ML/AI / Batch / HPC / SAP / Analytics / File Server / NoSQL / Application Server / Container Host / Build Farm / Domain Controller
Default Compliance Current-Generation Hardware / AWS Nitro Enclaves / Confidential Computing / Azure Trusted Launch (checkboxes, any combination)
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. Four 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 Staging, AND main family filter includes only burstable types (t/B/e2) Default Environment dropdown
Workload โ†” Processor Workload = ML/AI AND processor filter excludes all GPU/ARM options Default Workload dropdown
OS โ†” Providers OS = macOS AND an Azure or GCP provider is selected Default OS 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.
Physical-Core Licensing (alternate floor) Present on the AWS, Azure and Multi-Cloud pages. Off by default, which sizes SQL Server's 4-core licence floor by vCPU โ€” the correct basis for a VM licensed directly, and also for License Mobility / BYOL, which Microsoft licenses by virtual core with the same 4-vCPU-per-VM minimum. Turning this on switches the floor to physical cores instead โ€” a stricter, more conservative count (AWS and Azure instances are typically hyperthreaded ~2:1, so an 8-vCPU instance is often only 4 physical cores) for scenarios where you specifically need to size against physical cores rather than a licensing requirement. Has no effect on GCP rows โ€” no comparable field exists for that provider.
Instance Family Names Restrict to specific family categories: General purpose, Compute optimized, Memory optimized, Storage optimized, Micro instances, GPU instance, Machine Learning ASIC, FPGA, Media Accelerator. The options are read from the catalogue, so they always match the data. The multi-cloud page has no such control; use its Instance Category filter instead.
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, Bare Metal (backed by the real is_bare_metal field)

๐Ÿ”ท Azure-Specific Filters

Filter Description
Instance Family Names Restrict to specific family categories: General purpose, Compute optimized, Memory optimized, Storage optimized, GPU, High performance compute
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
Instance Family Names Restrict to specific family categories: General purpose, Compute optimized, Memory optimized, Storage optimized, Accelerator optimized, Network optimized
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, shared-core families, or Bare Metal (backed by the machine type's own "-metal" name, no field needed)

โญ 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.

๐Ÿงฉ User-Defined Rules

Its own top-level Custom Rules section, first on every tool page, lets you author your own conditional filters without touching the CSV. Each rule has four parts:

A rule fires on every row whose value on that dimension matches, and folds its tokens into that row's Exclude / Include Only set โ€” the same per-row mechanism the CSV's own Exclude column feeds, so a custom rule and a CSV cell can never disagree about how a token is interpreted (a family prefix, a category like GPU, or a specific type name all work the same way in both places).

Rules are listed below the entry form with a delete button, stored per page (like presets, never leaving your machine), and applied automatically on the next Generate โ€” no re-upload needed. Use this for a standing preference the Rule Engine dropdowns don't express โ€” "always exclude burstable for Database regardless of ENV," or "for HIPAA rows, include only Nitro-supported families" โ€” without hand-editing every row.

๐Ÿ’พ Browser Storage and Fleet Snapshots

Everything this tool keeps is kept in your browser, never sent anywhere. The Browser Storage section on every tool page lists each kind of data the tool stores, with its size, and lets you clear one of them, or all of them. Clearing is two-step: the first press asks you to confirm, the second clears.

A fleet snapshot saves the results of your last run under a name you choose, so you can come back to it. A snapshot holds the per-VM results, the providers and the custom rules that run used. The per-VM results include the columns you uploaded, so a snapshot holds your inventory's data as well as the recommendations, though not the original file. You need a completed run to save one.

Export file saves one snapshot as a JSON file, and Import snapshot file reads such a file back in, so a fleet state can move to another browser or person without a server. The file is made and read on your device and is sent nowhere. It holds the same per-VM results as the snapshot, so handle it like the inventory. An import is checked first: a file that is not a snapshot from this tool, is from a different version, is too large or holds anything other than plain values is refused with the reason, and nothing is stored. If the name is already taken you are asked for another one; an import never replaces an existing snapshot. This is a way to share a file, not collaboration: nothing is kept in sync.

Compare with last run checks a saved snapshot against your latest run. The two count as the same estate only when at least 90% of the VMs in the larger run appear in both, matched by VM Name. For the same estate you see how many VMs and cells changed, and a table of each changed cell (up to 50 rows). For a different estate the comparison is refused, and the message lists the VMs that were added and removed, so you can save the new run as its own snapshot instead.

Your browser sets how much it will store for this site, usually about 5 MB. If that is full, a save is refused with a message, and nothing already stored is lost. Delete a snapshot or clear some data, then try again.

โ˜ 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,AWS Min Gen,Azure Min Gen,GCP 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" The file exceeds 10 MB, has more than 100,000 rows or 500 columns, or is a workbook that expands to more than 200 MB Split into smaller batches. Remove unused columns. Filter to the VMs you need recommendations for. The previous upload stays loaded when a file is refused.
"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 A very large file takes longer; if it stalls, split it 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 a dollar amount?
A: Cloud pricing is not static โ€” it changes with region, OS, discounts, Savings Plans, Reserved Instances, and enterprise agreements. Showing a dollar figure in the output would be misleading within weeks, so none ever appears โ€” no price column, no CSV field, no export sheet. Since 3.17, the stats bar, App Portfolio Overview, and Executive Print Report show one aggregate, relative percentage per provider instead ("Optimized ranks ~X% lower than Like-to-Like"). 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. A page always loads the current version when you're online; region data and scripts update automatically in the background.

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 (web โ†’ web-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. If a column is named like one of this tool's own output columns (typically because an earlier export was uploaded again), it says so: a run ignores that column and writes its own, so the old values are never mixed into the new results. Rename the column in your file to keep its values.

Q: The input check says "How well the data supports sizing". What does High, Medium and Low mean?
A: It appears only when your file carries percentile or peak columns (p90, p95, p99 or Peak) and some VMs fall short of them. Per VM: High means every dimension the row reports (CPU, memory) has a percentile or peak reading; Medium means only one does; Low means an average only, or nothing, so bursts are invisible. It describes what the file carries, not which statistic a run will size on. The whole-file answer is separate and depends on how many VMs there are (under 25 Low, 25 to 249 Medium, 250 or more High): thousands of average-only rows make the file larger, not any row richer. A plain average-only upload does not show this note at all.

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. Storage type, IOPS and throughput are left blank for the calculator to default, and the storage amount is filled in only when your file carried a Disk (GB) column; add the rest in the calculator after import if your estimate needs it.

๐ŸŽฏ 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.