diff --git a/docs/docs.html b/docs/docs.html
index 37fe8f1c..39cf454d 100644
--- a/docs/docs.html
+++ b/docs/docs.html
@@ -247,13 +247,37 @@ <h5 id="unparse">Unparse</h5>
 								<pre><code class="language-javascript">// defaults shown
 {
 	quotes: false,
+	onlyQuoteStrings: false,
 	quoteChar: '"',
 	escapeChar: '"',
 	delimiter: ",",
-	header: true,
-	newline: "\r\n"
+	newline: "\r\n",
+	header: true
 }</code></pre>
-                                Set <code>quotes</code> to <code>true</code> to always enclose each field in quotes, or an array of true/false values correlating to specific to columns to force-quote. The character used to quote can be customized using <code>quoteChar</code>. The character used to escape the <code>quoteChar</code> within a field can be customized using <code>escapeChar</code>. The <code>delimiter</code> can be any valid delimiting character. The <code>newline</code> character(s) may also be customized. Setting <code>header</code> to <code>false</code> will omit the header row.
+								<ul>
+									<li>
+										<code>quotes</code>: Set this property to <code>true</code> to always enclose each field in quotes, or an array of true/false values correlating to specific to columns to force-quote (e.g., <code>[true, false, true]</code>).
+									</li>
+									<li>
+										<code>onlyQuoteStrings</code>: Setting this property to <code>true</code> will just quote strings in the resulting CSV. All other data types like numbers or booleans will not be quoted. Note, that this property overrides the <code>quotes</code> property.
+									</li>
+									<li>
+										<code>quoteChar</code>: The character used to quote.
+									</li>
+									<li>
+										<code>escapeChar</code>: The character used to escape the <code>quoteChar</code> within a field.
+									</li>
+									<li>
+										<code>delimiter</code>: This property can be any valid delimiting character.
+									</li>
+									<li>
+										<code>newline</code>: This property can be any valid newline character(s).
+									</li>
+									<li>
+										<code>header</code>: Setting this property to <code>false</code> will omit the header row.
+									</li>
+								</ul>
+
 							</li>
 						</ul>
 					</div>
diff --git a/papaparse.js b/papaparse.js
index 5f670bd7..1b845d11 100755
--- a/papaparse.js
+++ b/papaparse.js
@@ -280,6 +280,9 @@
 		/** quote character */
 		var _quoteChar = '"';
 
+		/** whether only strings should be quoted */
+		var _onlyQuoteStrings = false;
+
 		unpackConfig();
 
 		var quoteCharRegex = new RegExp(_quoteChar, 'g');
@@ -343,6 +346,11 @@
 
 			if (typeof _config.header === 'boolean')
 				_writeHeader = _config.header;
+
+			if (typeof _config.onlyQuoteStrings === 'boolean') {
+				_onlyQuoteStrings = _config.onlyQuoteStrings;
+				_quotes = false; // Override quotes, since only quote strings is selected
+			}
 		}
 
 
@@ -404,17 +412,23 @@
 		}
 
 		/** Encloses a value around quotes if needed (makes a value safe for CSV insertion) */
-		function safe(str, col)
+		function safe(value, col)
 		{
-			if (typeof str === 'undefined' || str === null)
+			if (typeof value === 'undefined' || value === null)
 				return '';
 
-			if (str.constructor === Date)
-				return JSON.stringify(str).slice(1, 25);
+			if (value.constructor === Date)
+				return JSON.stringify(value).slice(1, 25);
+
+			// We must check, whether the data type of value is string already here,
+			// since all data types are converted into strings in the next line
+			var onlyQuoteStrings = _onlyQuoteStrings && typeof value === 'string';
 
-			str = str.toString().replace(quoteCharRegex, _quoteChar + _quoteChar);
+			// Converts every data type to string
+			var str = value.toString().replace(quoteCharRegex, _quoteChar + _quoteChar);
 
-			var needsQuotes = (typeof _quotes === 'boolean' && _quotes)
+			var needsQuotes = onlyQuoteStrings
+							|| (typeof _quotes === 'boolean' && _quotes)
 							|| (_quotes instanceof Array && _quotes[col])
 							|| hasAny(str, Papa.BAD_DELIMITERS)
 							|| str.indexOf(_delimiter) > -1
diff --git a/tests/test-cases.js b/tests/test-cases.js
index ad0d9a58..178e3156 100644
--- a/tests/test-cases.js
+++ b/tests/test-cases.js
@@ -1451,6 +1451,18 @@ var UNPARSE_TESTS = [
 		config: { quotes: [true, false, true] },
 		expected: '"Col1",Col2,"Col3"\r\n"a",b,"c"\r\n"d",e,"f"'
 	},
+	{
+		description: "Force quotes around string fields only",
+		input: [['a', 'b', 'c'], ['d', 10, true]],
+		config: { onlyQuoteStrings: true },
+		expected: '"a","b","c"\r\n"d",10,true'
+	},
+	{
+		description: "Force quotes around string fields only (with header row)",
+		input: [{ "Col1": "a", "Col2": "b", "Col3": "c" }, { "Col1": "d", "Col2": 10, "Col3": true }],
+		config: { onlyQuoteStrings: true },
+		expected: '"Col1","Col2","Col3"\r\n"a","b","c"\r\n"d",10,true'
+	},
 	{
 		description: "Empty input",
 		input: [],