Help and FAQ
Short answers to the questions that come up most: what the tool can read, how to fix a room, what Include does, and what to change when the load does not look right.
What you can upload
LoadLens reads the text layer of a PDF — the real, selectable text that a drafting program writes into the file. It also imports an Excel / CSV room schedule directly, and it can read a scanned sheet with the optional OCR box. Three kinds of input work well:
Works: room tags on the plan
- The PDF was exported or plotted from AutoCAD, Revit, ArchiCAD or similar.
- Each room has a text label such as CONFERENCE ROOM, ROOM 203 or BEDROOM.
- Areas may be printed next to the name (for example 24.5 m² or 265 sq.ft). If they are, they are used; if not, you type them.
- Level names such as GROUND FLOOR, FIRST FLOOR or TERRACE appear on the sheet.
Works: a room schedule table
- A schedule or legend page with a table: Room no. / Name / Area, typed in the PDF.
- Often the cleanest source — better than the plan itself.
- Upload the schedule page and the plan pages together; rooms found are added to the table.
Works: an Excel / CSV room schedule
- Export the room schedule from Revit or Excel and drop the .csv, .tsv or .xlsx file on the page. The drop zone accepts all four file types.
- No PDF text and no OCR needed — the most accurate way in, and the best answer for a scanned drawing.
- The room table's Source column shows CSV/Excel for these rows.
Works with limits: a scanned sheet (OCR)
- Tick Read scanned drawings with OCR (slow) for a scan, a photo or an image-only plot.
- A legible scanned schedule reads well — Office 27 m², Conference 48 m², Store about 2.9 m² came through in testing.
- A scanned drawing currently comes back with 0 rooms — the small m² area labels are not recoverable. The page says so and suggests the better route: import the Excel / CSV room schedule.
Frequently asked questions
Why does a scanned drawing find no rooms? What does the OCR box do?
A scan, a photo, or a PDF plotted to an image has no text layer — it is just a picture of a drawing. There is nothing for LoadLens to read as text, so the normal reader reports no rooms. The same is true for an image-only plot or a drawing where the room labels were converted to outlines.
Tick "Read scanned drawings with OCR (slow)" in the upload panel to read such a sheet with OCR. What to expect, honestly:
- OCR is off by default and only runs when you tick the box.
- The first time you use it, the page downloads about 11 MB of OCR engine from this site. Nothing goes to a third party; the reading happens in your browser.
- It is slow: about 4 seconds per page, and up to about 12 seconds when it has to search for the page rotation.
- A legible scanned schedule reads well — in testing the Office (27 m²), Conference (48 m²) and Store (about 2.9 m²) rows came back with their areas.
- A scanned drawing currently comes back with 0 rooms: OCR can read large text, but the small m² area labels on a scanned plan are usually not recoverable. When that happens the status line tells you so and points you at the schedule import below.
The better answer for a scanned sheet: ask the architect / drafter for the original vector PDF, or for the room schedule as .xlsx / .csv and import that. It needs no OCR and it is the most accurate input. For a small job, Add room manually may also be faster than fixing OCR.
Quick test: open the PDF and try to select the text of a room name with the mouse. If you can select it, LoadLens can read it. If you cannot, it is an image — use OCR or the schedule import.
How do I import an Excel or CSV room schedule?
Export the room schedule from Revit or Excel as .xlsx, .csv or .tsv, then drag that file onto the same drop zone you use for PDFs — it accepts .pdf, .csv, .tsv and .xlsx.
- The reader looks for a header row with room name, area, level, room number and so on. Ordinary schedule headings (Room / Space Name, Area, Level, Room No., Type, People) are understood.
- Areas in m² or ft² both work, and dimensions like 4500x3600 or 6.0 x 4.5 are turned into an area.
- Rows whose name looks like a toilet, shaft or store are set to not air conditioned by default — check the In tick.
- The Source column of each row shows CSV/Excel, so you can see which rows came from the sheet.
This is the recommended path for a scanned drawing: the schedule gives clean names and areas, where OCR on the drawing cannot.
A room name, area or level is wrong. How do I fix it?
Every cell in the room table is editable. Changing a value recalculates the load immediately.
- Wrong name or wrong area: click the cell and type the correct value.
- Wrong room type: use the Space type dropdown in the row (Office, Conference, Cabin, Bedroom, Retail, Server, Gym and so on). The type sets people, lighting and equipment per m².
- Found something that is not a room (a title, a dimension, a note read as a name): use the × button at the end of the row to delete it.
- A real room that is not air conditioned (toilet, store, staircase): do not delete it — leave it in the table and untick In so the record stays with the project but is out of the totals.
- Half the rooms missing: the drawing may split rooms across layers or sheets. Upload the other pages too, or add the missing rooms manually.
How do I add a room that the PDF reader missed?
Use the plan view. Once a drawing is loaded — your own PDF, or the Try sample drawing button — the calculator page shows the section 3. Draw rooms on the plan. It renders the actual page of the drawing and lets you draw a room straight onto it.
- Set Drawing scale to the scale printed on the sheet — 1:100 is the default, and 1:20, 1:50, 1:200 and 1:500 are also there.
- Stay in Draw room mode and drag a rectangle over the room. A new room is created as Drawn room N, its area is measured from the rectangle at that scale, and it is already counted in the cooling load. A stray click does nothing — the drag has to be big enough.
- The room's load breakdown opens so you can set its name, space type, orientation and glazing. Switch to Select / edit and click a box to reopen it later.
The scale has to be right for the area to be right: the area is measured from the rectangle at the scale you pick, so a wrong scale gives a wrong area, and changing the scale re-measures every room you drew. Rooms read from the PDF have no boundary of their own on the sheet, so by default the plan shows only the boxes you place yourself. Use Place all rooms on the plan to give every room the drawing names a locator box as well — a marker centred on the label and sized back from that room's area, never its traced walls (see the FAQ entry above).
Drawn rooms (their rectangle and scale) are saved with the project — in the browser and in the Save project (.json) file — so they come back after a reload. The plan view uploads nothing: the drawing is rendered in your browser.
The drawing is kept in this browser, so reloading the page, or coming back tomorrow, brings the sheet back with your rooms already drawn on it — you do not have to find the file again. It is still never uploaded anywhere. If a drawing is very large (over 40 MB) or the browser has no storage room left, the app says so and the sheet is the only thing that will not come back.
I drew a room box in the wrong place. Can I move, resize or delete it?
Yes. Switch the plan view to Select / edit and work on the box directly:
- Move: drag the body of the box. The room follows your pointer, and its area does not change — only its position on the sheet does.
- Resize: drag one of the four corner handles of the selected box. Because a drawn room's area is measured from its rectangle, resizing it re-measures the room: its area and its length × width are recalculated at the drawing scale, the row in the table updates and the total cooling load follows.
- Delete: select the box and press Delete (or Backspace). The room is removed from the table and from the totals. The same × button at the end of the row does the same thing.
- Pan: the sheet scrolls if it is zoomed past the panel width. Drag with the middle mouse button, or hold Space and drag, to pan while staying in a drawing or selecting mode.
Moving and resizing are saved with the project automatically — reload the page and the box is where you left it. The keystroke only deletes when the focus is not in a table cell, so pressing Delete while typing never removes a room by accident.
Can I see all the rooms from the table on the drawing?
Yes — click Place all rooms on the plan in the plan view (3. Draw rooms on the plan). Every room whose label the PDF reader found gets a box on the sheet, so you can click a room in the drawing instead of hunting for its row. Remove placed rooms takes those boxes away again.
Be clear about what the box is: it is a locator, not the room's walls. The text on a plan says where the room is named (CONFERENCE ROOM 24.5 m²) but nothing about where its boundaries are, so LoadLens puts a box centred on that label and sizes it back from the room's own area at the drawing scale. The box is therefore a marker that shows you where the room sits and how big it reads — it is not a traced outline, and it is not measured off the drawing.
- The load does not change. The area is the input to the box, not an output of it, so placing rooms cannot alter any load figure. Removing them cannot either.
- Rooms the plan does not name (a schedule import, or a room added by hand with no label) have no point on the sheet to sit on, so they stay in the table only. The status line tells you exactly how many that is. The same applies to a room with no area — there is nothing to size a box from.
- A project saved by an older version may have rooms stored without the point at which the sheet names them. Clicking the button then re-reads the drawing this browser still keeps (no re-upload needed) and recovers those positions — the status line says the drawing was re-read. The rooms themselves, their areas and your edits are left untouched, and the load does not change.
- A box you move or resize by hand stops being a placed box and becomes a drawn room, and then its area is re-measured from the box — see “I drew a room box in the wrong place” above. So only ever drag a placed box if you really mean to re-measure that room.
- Boxes you drew yourself are left alone by both buttons, and the placed boxes are saved with the project, so they are still there after a reload.
What does the "In" (Include) tick do, and why are toilets and stairs excluded?
The In column decides whether a row is counted in the load. A ticked room is added up into the room totals, the level subtotals and the TR / L/s figures. An unticked room is still shown in the table and still printed in the report as not air conditioned, but it adds nothing to any total, and no supply air is sized for it.
Toilets, WCs, bathrooms, staircases, lift shafts, duct shafts, store rooms, corridors to non-conditioned areas, balconies and car parks are unticked by default, because they are normally not cooled. This is why the total is lower than "every room in the drawing".
Put a tick back if the space really is air conditioned — for example a toilet inside a conditioned office floor, or a corridor inside the conditioned envelope. Use Select all / Select none with the filters to change a whole level at once.
The load looks too high (or too low). What should I check first?
Work down this list — the top items change the answer the most:
- Origin / orientation. The default is West, which has the worst solar gain. A north-facing or interior room loaded as West will read high. Use the Bulk edit → Apply orientation control to set a whole level correctly.
- Glass area and exposed wall. If glass was blank, it was assumed at 30 % of one long side × height. Type the real glass and wall areas from the drawing; this is the single biggest correction.
- Roof tick. Only the top floor (or the top of a single-storey building) should have Roof ticked. A roof ticked on every level inflates the load, because the roof ETD is 22 K, much larger than a wall ETD.
- Room type. A 30 m² room typed as Conference (2.5 m² per person, so 12 people) is very different from Office (10 m² per person, 3 people). Check the People column — fix the count directly if you know it.
- Fresh-air rate. The outdoor air load is counted on top of the room load and is often the largest block in a humid climate. If your project uses a different ventilation standard, adjust the fresh air rather than the room load.
- Safety factor. The default is 10 %. If your office practice is 5 % or 15 %, change it in the assumptions panel and the whole project follows.
- Design conditions. Check the city (or the outdoor DB / WB you typed). Kochi 35/28 °C and Dubai 46/29 °C give very different totals.
- Infiltration. 0.5 air changes per hour is a closed-building figure. A leaky or frequently opened space may need more; a pressurised one less.
- Include column. Look for a big room that should be ticked but is not — that lowers the total, not raises it.
Remember the method is a handbook-level estimate. A difference of 10–15 % against a full RTS calculation is normal; a difference of 2× usually means an input, not the method.
Where do the numbers end up in the report?
The printable report has six numbered sections. Knowing which is which saves time when a checker asks:
- 1. Project and design conditions — project name, country, city, outdoor DB and WB, outdoor RH, indoor DB and RH, the ΔT, the supply ΔT and the safety factor.
- 2. Assumptions used — wall U, glass U, shading coefficient, roof U, roof ETD, partition U, infiltration ACH and the glazing percentage that was assumed.
- 3. Room wise load — one row per included room with area, height, people, orientation, glass, sensible W, latent W, fresh-air W, total W, TR, supply air L/s and ft²/TR, with a totals row at the bottom.
- 4. Load summary — total TR and kW, room sensible and latent heat, the safety allowance (what the 10% safety factor is worth in W), supply air L/s, fresh-air L/s, conditioned area in m² and ft², and the area per tonne in both ft²/TR and m²/TR.
- 5. Level wise subtotal — rooms, area, TR and L/s per level, so each floor can be sized separately.
- 6. Important notes — the method and its limits, and the signature lines for prepared by / checked by / date.
On screen the same figures are in the Load summary cards, the Level wise subtotal table and the room table, and the CSV export carries every input and result in one row per room.
How do I get a printable report or a PDF copy?
Press Print / Save PDF report. The report appears over the page — it does not open a new window, so a pop-up blocker cannot get in the way, and it works inside an embedded preview too. Use Print / Save as PDF on the report's own bar, then choose Save as PDF in the print dialog to keep a copy (A4 landscape). Close or Escape goes back to the calculator.
Where do my files go? Is my drawing uploaded anywhere?
Nothing is uploaded to a third party. There is no cloud service, no analytics and no account.
- Static version (GitHub Pages): the PDF is read by pdf.js inside your own browser tab, and an Excel / CSV room schedule is read there too. The file never leaves your computer and no network request carries it.
- Local server version (you ran
npm start): the PDF is posted tohttp://localhost:3000— your own machine — parsed there and not stored. Room schedules and OCR still run in the browser. The page tells you which mode it is in: Reading PDFs in your browser or Reading PDFs on the server. - OCR (optional): the OCR engine (about 11 MB of wasm) is downloaded once from this same site, not from a CDN, and the reading happens in your browser. Your file is never uploaded to a third party.
Your project (rooms and settings) is saved in your browser's own local storage so a reload restores it. Use Save project (.json) if you want a file you can move to another computer, and Clear all rooms if you want to start fresh.
Can I use it on a phone or a tablet?
Yes. The pages are responsive down to a 390 px screen and the room table scrolls sideways instead of breaking. Reading and checking a few rooms on a phone at site works; editing a 300-room drawing is much easier on a laptop.
Why are the rooms on the drawing boxes, and can they be their real shape?
A PDF's text tells LoadLens where a room is named and how big it is; the walls are separate lines in the file. Trace real outlines in the plan panel reads those lines and gives each room its real shape — but only where the result can be checked: the name must have an enclosed area of its own, and the traced area must agree with the area the plan states. Rooms that fail either check keep their box, and every row is marked outline or box. Nothing is guessed, and the load never changes — the area always stays the one your plan (or you) gave.
If almost nothing traces, your drawing scale is wrong for that sheet. The outlines themselves say what the scale should be, and the app offers it in the scale list (for example 1:225 (from the drawing)) — pick it and trace again.
Still stuck?
If a PDF gives no rooms, check that the text is selectable (see the first question). If it is selectable and still fails, please report it on the project page with the drawing's source program and one screenshot of the room tag: github.com/ratul-sraj/hvac.
The exact formulas and default values are on the Method and assumptions page, and About explains how to run the tool locally.
Open the calculator