diff --git a/src/org/opensha2/calc/Site.java b/src/org/opensha2/calc/Site.java
index 49cd9ea753b6aea09931ffb1320c71374e82d525..6a49dc9752f803f630006b00149eb7bd5cff12de 100644
--- a/src/org/opensha2/calc/Site.java
+++ b/src/org/opensha2/calc/Site.java
@@ -125,7 +125,7 @@ public class Site implements Named {
 
 	@Override
 	public String toString() {
-		return new StringBuilder(Strings.padEnd(name, 16, ' '))
+		return new StringBuilder(Strings.padEnd(name, 24, ' '))
 			.append(String.format("%.3f %.3f Vs30=%s ", location.lon(), location.lat(), vs30))
 			.append(vsInferred ? "inferred " : "measured ")
 			.append(String.format("Z1.0=%s Z2.5=%s", z1p0, z2p5))
diff --git a/src/org/opensha2/calc/Sites.java b/src/org/opensha2/calc/Sites.java
index f8cb483bfe1efee84e534afe441246342b244ba1..4afb4a40c8baa7d14f9b8ab10d8e453da841a77b 100644
--- a/src/org/opensha2/calc/Sites.java
+++ b/src/org/opensha2/calc/Sites.java
@@ -2,13 +2,14 @@ package org.opensha2.calc;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkState;
+import static com.google.common.base.Strings.padStart;
 import static com.google.common.base.Strings.repeat;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.opensha2.geo.BorderType.MERCATOR_LINEAR;
 import static org.opensha2.util.GeoJson.validateProperty;
 import static org.opensha2.util.Parsing.splitToList;
 import static org.opensha2.util.TextUtils.ALIGN_COL;
-import static org.opensha2.util.TextUtils.format;
+import static org.opensha2.util.TextUtils.*;
 
 import java.io.IOException;
 import java.io.Reader;
@@ -33,6 +34,7 @@ import org.opensha2.util.Parsing.Delimiter;
 import org.opensha2.util.TextUtils;
 
 import com.google.common.base.Optional;
+import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.reflect.TypeToken;
@@ -191,13 +193,15 @@ public final class Sites {
 		return new ListIterable(ImmutableList.of(b.build()));
 	}
 
+	private static final int TO_STRING_LIMIT = 5;
+	private static final int SITE_INDENT_SIZE = 8;
+	private static final String SITE_INDENT = Strings.repeat(" ", SITE_INDENT_SIZE);
+
 	/*
 	 * Parent class for deserialization of different GeoJSON site file formats
 	 */
 	private abstract static class SiteIterable implements Iterable<Site> {
 
-		static final int TO_STRING_LIMIT = 5;
-
 		@Override
 		public String toString() {
 			boolean region = this instanceof RegionIterable;
@@ -207,12 +211,15 @@ public final class Sites {
 				.append(" [size=").append(size).append("]");
 			if (!region) {
 				for (Site site : Iterables.limit(this, TO_STRING_LIMIT)) {
-					sb.append(format("Site")).append(site);
+					sb.append(NEWLINE)
+						.append(SITE_INDENT)
+						.append("Site: ")
+						.append(site);
 				}
 				if (size > TO_STRING_LIMIT) {
 					int delta = size - TO_STRING_LIMIT;
-					sb.append(TextUtils.NEWLINE)
-						.append(repeat(" ", ALIGN_COL + 2))
+					sb.append(NEWLINE)
+						.append(SITE_INDENT)
 						.append("... and ").append(delta).append(" more ...");
 				}
 			}