diff --git a/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py b/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py
index 44cc9f96573..91fb25b96c1 100644
--- a/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py
+++ b/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py
@@ -132,6 +132,7 @@ from Datasources2Vrt import Datasources2Vrt
 from CheckValidity import CheckValidity
 from OrientedMinimumBoundingBox import OrientedMinimumBoundingBox
 from Smooth import Smooth
+from ReverseLineDirection import ReverseLineDirection
 
 pluginPath = os.path.normpath(os.path.join(
     os.path.split(os.path.dirname(__file__))[0], os.pardir))
@@ -180,7 +181,8 @@ class QGISAlgorithmProvider(AlgorithmProvider):
                         SelectByExpression(), HypsometricCurves(),
                         SplitLinesWithLines(), CreateConstantRaster(),
                         FieldsMapper(), SelectByAttributeSum(), Datasources2Vrt(),
-                        CheckValidity(), OrientedMinimumBoundingBox(), Smooth()
+                        CheckValidity(), OrientedMinimumBoundingBox(), Smooth(),
+                        ReverseLineDirection()
                         ]
 
         if hasMatplotlib:
diff --git a/python/plugins/processing/algs/qgis/ReverseLineDirection.py b/python/plugins/processing/algs/qgis/ReverseLineDirection.py
new file mode 100644
index 00000000000..2f2cb87e610
--- /dev/null
+++ b/python/plugins/processing/algs/qgis/ReverseLineDirection.py
@@ -0,0 +1,84 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    ReverseLineDirection.py
+    -----------------------
+    Date                 : November 2015
+    Copyright            : (C) 2015 by Nyall Dawson
+    Email                : nyall dot dawson at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Nyall Dawson'
+__date__ = 'November 2015'
+__copyright__ = '(C) 2015, Nyall Dawson'
+
+# This will get replaced with a git SHA1 when you do a git archive323
+
+__revision__ = '$Format:%H$'
+
+from qgis.core import QGis, QgsGeometry, QgsFeature
+from processing.core.GeoAlgorithm import GeoAlgorithm
+from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
+from processing.core.parameters import ParameterVector, ParameterNumber
+from processing.core.outputs import OutputVector
+from processing.tools import dataobjects, vector
+
+
+class ReverseLineDirection(GeoAlgorithm):
+
+    INPUT_LAYER = 'INPUT_LAYER'
+    OUTPUT_LAYER = 'OUTPUT_LAYER'
+
+    def defineCharacteristics(self):
+        self.name, self.i18n_name = self.trAlgorithm('Reverse line direction')
+        self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools')
+
+        self.addParameter(ParameterVector(self.INPUT_LAYER,
+                                          self.tr('Input layer'), [ParameterVector.VECTOR_TYPE_LINE]))
+        self.addOutput(OutputVector(self.OUTPUT_LAYER, self.tr('Reversed')))
+
+    def processAlgorithm(self, progress):
+        layer = dataobjects.getObjectFromUri(
+            self.getParameterValue(self.INPUT_LAYER))
+        provider = layer.dataProvider()
+
+        writer = self.getOutputFromName(
+            self.OUTPUT_LAYER).getVectorWriter(
+                layer.fields().toList(),
+                provider.geometryType(),
+                layer.crs())
+
+        outFeat = QgsFeature()
+
+        features = vector.features(layer)
+        total = 100.0 / float(len(features))
+        current = 0
+
+        for inFeat in features:
+            inGeom = inFeat.constGeometry()
+            attrs = inFeat.attributes()
+
+            outGeom = None
+            if inGeom and not inGeom.isEmpty():
+                reversedLine = inGeom.geometry().reversed()
+                if reversedLine is None:
+                    raise GeoAlgorithmExecutionException(
+                        self.tr('Error reversing line'))
+                outGeom = QgsGeometry(reversedLine)
+
+            outFeat.setGeometry(outGeom)
+            outFeat.setAttributes(attrs)
+            writer.addFeature(outFeat)
+            current += 1
+            progress.setPercentage(int(current * total))
+
+        del writer