diff --git a/framework/yii/widgets/Spaceless.php b/framework/yii/widgets/Spaceless.php
new file mode 100644
index 0000000..846914c
--- /dev/null
+++ b/framework/yii/widgets/Spaceless.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * @link http://www.yiiframework.com/
+ * @copyright Copyright (c) 2008 Yii Software LLC
+ * @license http://www.yiiframework.com/license/
+ */
+
+namespace yii\widgets;
+
+use yii\base\Widget;
+
+/**
+ * Spaceless widget removes whitespace characters between HTML tags. Whitespaces within HTML tags
+ * or in a plain text are always left untouched.
+ *
+ * Usage example:
+ * ```php
+ * <body>
+ *     <?php Spaceless::begin(); ?>
+ *         <div class="nav-bar">
+ *             <!-- tags -->
+ *         </div>
+ *         <div class="content">
+ *             <!-- tags -->
+ *         </div>
+ *     <?php Spaceless::end(); ?>
+ * </body>
+ * ```
+ *
+ * This example will generate the following HTML:
+ * ```html
+ * <body>
+ *     <div class="navbar"><!-- other tags --></div><div class="content"><!-- other tags --></div></body>
+ * ```
+ *
+ * This method is not designed for content compression (you should use `gzip` output compression to
+ * achieve it). Main intention is to strip out extra whitespace characters between HTML tags in order
+ * to avoid browser rendering quirks in some circumstances (e.g. newlines between inline-block elements).
+ *
+ * Note, never use this method with `pre` or `textarea` tags. It's not that trivial to deal with such tags
+ * as it may seem at first sight. For this case you should consider using
+ * [HTML Tidy Project](http://tidy.sourceforge.net/) instead.
+ *
+ * @see http://tidy.sourceforge.net/
+ * @author resurtm <resurtm@gmail.com>
+ * @since 2.0
+ */
+class Spaceless extends Widget
+{
+	/**
+	 * Starts capturing an output to be cleaned from whitespace characters between HTML tags.
+	 */
+	public function init()
+	{
+		ob_start();
+		ob_implicit_flush(false);
+	}
+
+	/**
+	 * Marks the end of content to be cleaned from whitespace characters between HTML tags.
+	 * Stops capturing an output and echoes cleaned result.
+	 */
+	public function run()
+	{
+		echo trim(preg_replace('/>\s+</', '><', ob_get_clean()));
+	}
+}
diff --git a/tests/unit/framework/widgets/SpacelessTest.php b/tests/unit/framework/widgets/SpacelessTest.php
new file mode 100644
index 0000000..9b67600
--- /dev/null
+++ b/tests/unit/framework/widgets/SpacelessTest.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace yiiunit\framework\widgets;
+
+use yii\widgets\Spaceless;
+
+class SpacelessTest extends \yiiunit\TestCase
+{
+	public function testWidget()
+	{
+		ob_start();
+		ob_implicit_flush(false);
+
+		echo "<body>\n";
+
+		Spaceless::begin();
+		echo "\t<div class='wrapper'>\n";
+
+		Spaceless::begin();
+		echo "\t\t<div class='left-column'>\n";
+		echo "\t\t\t<p>This is a left bar!</p>\n";
+		echo "\t\t</div>\n\n";
+		echo "\t\t<div class='right-column'>\n";
+		echo "\t\t\t<p>This is a right bar!</p>\n";
+		echo "\t\t</div>\n";
+		Spaceless::end();
+
+		echo "\t</div>\n";
+		Spaceless::end();
+
+		echo "\t<p>Bye!</p>\n";
+		echo "</body>\n";
+
+		$expected="<body>\n<div class='wrapper'><div class='left-column'><p>This is a left bar!</p>".
+			"</div><div class='right-column'><p>This is a right bar!</p></div></div>\t<p>Bye!</p>\n</body>\n";
+		$this->assertEquals($expected,ob_get_clean());
+	}
+}